1、 学号 200532580013 密级_ 武汉大学本科毕业论文 Hibernate持久化技术在网上购书系统中的设计与实现院(系)名 称:国际软件学院专 业 名 称 :软件工程学 生 姓 名 :皮攀指 导 教 师 : 二九年六月BACHELORS DEGREE THESISOF WUHAN UNIVERSITYThe design and implement of Hibernate persistence in the Online BookstoreCollege :Wuhan UniversitySubject :International Software EngineeringName
2、 : PiPanDirected by: ProfessorJune 2009郑 重 声 明本人呈交的学位论文,是在导师的指导下,独立进行研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本学位论文的知识产权归属于培养单位。本人签名: 日期: 摘 要Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在
3、任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。本论文主要研究Hibernate的ORM(Object Relationship Mapping)框架、持久化功能以及Hibernate中的六个核心接口 Session、SessionFactory、Transaction、Query、Criteria和 Configuration,并对其进行相关实践。熟悉Hibernate中的框架结构、工作原理。结合Hibernate在网上购书网站上的
4、实践,体会和研究Hibernate的ORM框架和持久化。同时,本论文也将说明利用Hibernate的ORM框架和持久化功能来实现网上购书网站的业务层的基本功能。利用Hibernate的相关技术来对其功能进行优化,达到高性能。关键词:ORM;持久化;Hibernate的核心接口ABSTRACTHibernate is a open source object-relation mapping framework, who encapsulates JDBC in a light-weight-object way, and this makes Java programmers operate
5、database in the Object-Oriented way arbitrarily. The Hibernate could user in the place where the JDBC could use, both using in the client, and in the the application of Servlet/JSP, the most revolutionary mean is that, the Hibernate could be used in the J2EE with EJB instead of CMP, to accomplish th
6、e persistence. The aim of this the paper is to study the ORM framework of the Hibernate, persistence and the six core interfaces in the Hibernate: Session, SessionFactory, Transaction, Query,Criteria and Configuration, and implement them in the project. Understanding the framework of the Hibernate,
7、the principle and the API of the Hibernate. With the implement of the Hibernate in the Online Bookstore, experience and study the framework and persistence of the Hibernate. Achievement: With the Hibernate to implementing the base functions of the business level of the Online Bookstore. Use the othe
8、r technologies of the Hibernate to optimize the functions, reaching higher efficiency.Keywords:ORM;Persistence;Hibernate Core Interface(Session,SessionFactory,Transaction,Query ,Criteria and Configuration)目 录第1章绪论11.1本章内容介绍11.2研究背景11.3研究现状及发展趋势21.3.1研究现状21.3.2发展趋势31.4项目研究的目的和意义31.4.1研究目的31.4.2研究意义41
9、.5论文的主要内容41.6本章小结4第2章网上购书系统方案设计52.1本章内容介绍52.2系统简单介绍52.2.1系统的定位以及系统开发软件52.2.2系统的框架52.3系统总体方案设计62.3.1用户模块设计72.3.2管理员模块设计92.3.3系统模块设计122.4本章小结12第3章Hibernate基本技术介绍133.1本章内容介绍133.2Hibernate是什么133.3Hibernate的主要内容143.3.1Hibernate的框架143.3.2Hibernate的工作原理143.3.3Hibernate的核心接口163.3.4Hibernate API中的主要部分183.4Hi
10、bernate的优势和劣势183.5本章小结18第4章数据库设计194.1本章内容介绍194.2数据库需求分析194.3数据库详细设计204.4本章小结24第5章系统实现与验证255.1本章内容介绍255.2系统实现255.2.1基本类255.2.2用户模块的实现275.2.3管理员模块的实现355.2.4系统模块实现455.3系统验证455.3.1用户模块的验证455.3.2管理员模块的验证475.3.3系统模块的验证515.4本章小结51第6章全文总结52参考文献53致 谢54附录A55第1章 绪论1.1 本章内容介绍在本章,将会涉及到以下这些内容:l 研究背景,它将商业发展中的网站以及企
11、业开发中的情况。l 研究现状及发展趋势,它将把万维网和Hibernate作为研究对象。l 项目研究的目的和意义,它将介绍本论文的研究的目的、意义和主要内容。1.2 研究背景随着全球经济一体化的逐步深入,购书网站已是现代传统书店必不可少的经营策略,像卓越、当当网等等这些购书网站在互联网时代取得了巨大的成功。目前,购书网站在国际互联网上可以实现的商务功能已经多样化,可以说从最基本的对外沟通展示功能、信息发布功能,在线图书展示功能、在线洽谈功能、在线交易功能、在线采购功能、在线客户服务功能、在线网站管理功能等等,几乎以往传统书店功能都可以在互联网上进行电子化的高效运作。除了购书网站,还有B/B网站,
12、例如阿里巴巴,这些网站已经不是一个简单的出售或者交易网站,它们的存在和发展,能够促进Web开发的发展,使开发技术更快的发展。在如今的企业级应用开发环境中,面向对象的开发方法已成为主流。众所周知,对象只能存在于内存中,而内存不能永久保存数据。如果要永久保存对象的状态,需要进行对象的持久化(数据持久化顾名思义就是把程序中的数据以某种形式保存到 某存贮介质中,以达到持久化的目的。当程序运行时,一些数据是临时保存在内存中,一旦退出系统,这些数据就丢失了。那么,使用某种手段将数据保存在硬盘上或者数据库中,这样即使退出系统后又重新启动系统,那么这些数据仍然可以重新找回来。),即把对象存储到专门的数据存储库
13、中。目前,关系数据库仍然是使用最广泛的数据存储库。关系数据库中存放的是关系数据,它是非面向对象的。所以对于对象数据与关系数据交互技术成为未来开发的一种潮流。而Hibernate就是这种发展趋势的成果,它的产生解决了对象的持久化问题。同时它能够配合Struts和Spring框架,形成SSH的主流开发框架。如今它已经在现代企业开发中占有非常重要的地位。1.3 研究现状及发展趋势1.3.1 研究现状在万维网的最初阶段,网页都是用静态的HTML语言进行编写,所以要使页面内容改变,必须手动修改脚本语言,而且那个时候网页都是静态的,所以页面单一。而发展到现在,万维网采用了更多更先进的技术,例如CSS、Ja
14、vaScript、Ajax等等,使网页更加漂亮,更加容易维护,并且具有动态的效果。而网页的内容已经不是简单的靠手动来将内容嵌入到脚本语言中,这些内容都是从数据库中提取,利用相关技术在网页中进行显示。就现在的交易网站而言,大部分是两种类型:一种是ASP.NET网站,一种是JSP网站。ASP.NET是是微软公司的一套网站开发系统,而JSP是用JAVA语言开发的网站,这两种网站解决方案是现在网站开发的主流。相对于万维网发展而言,Hibernate虽然产生时间比较短,但Hibernate版本更新速度非常快,到目前为止有两个阶段性的版本:Hibernate2和Hibernate3。Hibernate2系
15、列的最高版本是 Hibernate2.1.8,Hibernate3系列在编写本书时的荐广泛使用的版本,但目前使用较多且较稳定的版本是Hibernate 3.1.3或Hibernate 3.1.2。另外,自Hibernate3发布以来,其产品线愈加成熟,相继出现了 Hibernate注释、Hibernate实体管理器、Hibernate插件工具等一系列产品套件。在方便程序员使用Hibernate进行应用程序 的开发的同时,也逐渐增强了Hibernate产品线的实力。Hibernate3在产品的应用性上有了极大提高,并且基于Java1.5进行了改进,且与EJB3.0进行了集成,在功能上有了很大的提
16、升。同时,Hibernate除了Java主流开发平台上(例如MyEclipse)有广泛的应用外,还对当今另一主流开发平台微软的.NET平台进行了支持,因此具有更加强大的生命力。相对于Hibernate2,Hibernate3版本的变化包括三个方面:l API的变化:API 的变化中比较重大的变化是包名的变化,主要是包的根路径发生了改变。l 元数据:元数据主要是指Hibernate映射文件中各种元素和属性的用法的变化。l HQL查询语句:Hibernate3 采用新的基于ANTLR的HQL/SQL查询翻译器,不过,Hibernate2的查询翻译器也依然存在。(HQL是Hibernate独特的SQ
17、L语言,通过它,能够跨越不同数据库SQL的差异性。)1.3.2 发展趋势随着购书网站等交易平台的发展,这些网站已经不仅用来交易,同时它们形成了一个小的模拟社区,人们可以在网站里进行交流,彼此讨论,并且相互交互物品。而对于以后的发展情况,它们将会加入更多元素,例如博客、游戏等等,使其成为一个更加真正的社区。而Hibernate它作为一种技术,它是一个非常优秀的持久层解决方案。具有以下发展趋势:l 与其他开发框架的集成将越来越成熟:如与struts、spring、jbpm的集成,充分发挥Hibernate自身的优势,也吸取了对方框架的优势,在软件系统的各个层各司其职。l 产品线的逐渐完善:通过增加
18、若干的工具套件,并支持。net平台,使Hibernate具有更强大的生命力。l 与EJB更好的集成:集成EJB,开始将重点转向重量级应用,使得Hibernate在企业级应用中必将占据一席之地。Hibernate的轻量级 ORM 模型逐步确立了在Java ORM架构中领导地位,甚至取代复杂而又繁琐的EJB模型而成为事实上的Java ORM工业标准。而且其中的许多设计均被J2EE 标准组织吸纳而成为最新EJB3.0规范的标准。随着Hibernate的广泛应用,越来越多的Java中间件厂商和Java项目(如JBoss、JBPM等)开始把目光集中到Hibernate上并将其纳入自身的体系,使Hiber
19、nate具有了越来越广阔的发展前景。1.4 项目研究的目的和意义1.4.1 研究目的由于技术发展的背景,Hibernate应运而生,它是轻量ORM(Object Relationship Mapping对象关系映射)框架,能够实现对对象和关系数据之间的交互,实现了对象持久化的需求,顺应了现代企业开发中的面向对象的开发需求。同时相对于JDBC, Hibernate有诸多优点,它不断能够提供持久化支持,同时它在业务代码量上也减少许多,同时它还能够和现代开发中非常流行的框架Struts, Spring进行结合,为现代企业级开发带来诸多好处。本论文的研究目的就是将是在网上购书网站上开发中使用Hiber
20、nate技术,利用它实现网上购书网站的持久化功能。1.4.2 研究意义Hibernate是一个开放源代码的对象关系映射框架,有专门的开发人员对于它的维护和研究,同时在全世界范围内,也有数以万计的开发人在对Hibernate进行研究。研究Hibernate不但顺应了技术的发展,同时也能够参与Hibernate的研究的讨论,对推动技术的发展能够做出自己的贡献。1.5 论文的主要内容本论文研究的主要内容分为技术方面和实践方面。在技术方面的研究内容有: Hibernate的ORM(Object Relationship Mapping)框架。 持久化功能 Hibernate中的五个核心接口 Sessi
21、on、SessionFactory、Transaction、Query、Criteria和Configuration 在实践方面,利用SH(Struts + Hibernate)框架建造一个网上购书网站,实践Hibernate持久化应用。1.6 本章小结本章主要是介绍了Hibernate的研究背景、意义、目的,以及Hibernate的发展趋势,从宏观方面介绍了Hibernate,同时也说明了本论文的主要内容。接下来,在下一章,将详细的介绍下Hibernate,介绍它是什么,它的内容是什么,以及它所具有的优势和劣势。第2章 网上购书系统方案设计22.1 本章内容介绍在本章将会涉及以下内容:l 介
22、绍网上购书系统的定位和开发软件,同时也会利用图文形式对本系统的框架结构进行介绍。l 系统总体方案设计,从网上购书网站中的各个模块入手,介绍如何利用Hibernate来实现持久化。2.2 系统简单介绍2.2.1 系统的定位以及系统开发软件网上购书网站是一个B/C(Business to Client)网站,售书公司可以通过购书网站作为平台来展示自己的产品,同时和客户进行网上交易。在本系统的中使用这些软件:开发平台MyEclipse7.0、数据库MySQL5.0、项目管理SVN2.2.2 系统的框架本系统是采用SH(Struts1.3+Hibernate)框架。Struts负责View层和Cont
23、rol层,Hibernate负责持久层。系统框架如图2.1所示图 2.1 系统的框架图用户通过浏览器发送请求到系统,系统的控制层通过调用业务层,业务层主要由Hibernate实现来实现特定的业务。系统的简单用例如图2.2所示。图2.2 系统用例图2.3 系统总体方案设计网上购书系统它有三个模块:用户模块,管理员模块,系统模块。系统结构图如图2.3。图 2.3 系统结构图1) 用户模块,主要是涉及到用户方面的功能,它有以下内容:l 用户注册与登陆:用户注册登陆。l 用户评论发布:用户发布图书评价信息。l 用户信息:用户修改个人信息。l 购书车:用户选择选购图书,存入购书车等待结账,下次进入购书车
24、时,购物车里上次购物的信息不会丢失。2) 管理员模块:l 图书类别管理:新增图书类别,修改类别。l 图书信息管理:对图书信息进行修改,增加。l 用户管理:设置用户状态。l 管理员的登录功能。l 超级管理员功能:增加管理员,修改管理员信息。3) 系统模块:l RSS系统,用于定制特定内容。用户模块和管理员模块,是负责对于系统的参与者的功能支持,系统模块是负责对于系统中的一些特定的功能的完成,是对于系统的支持。2.3.1 用户模块设计用户模块是用来负责对于用户的功能的支持。用户模块中有四个功能,下面是这些的详细设计:2.3.1.1 用户注册功能:用于用户注册。模块的简单流程:用户首先填写相关注册信
25、息,当这些注册信息通过验证以后,就会被插入到数据库中。Hibernate实现过程设计:1) 底层模块会将用户的注册信息封装到一个Entity对象中。2) 然后底层会调用Hibernate API中的save()来将Entity对象插入数据库的表中。3) 插入成功,底层会返回boolean=true;插入失败,底层会返回boolean=false。2.3.1.2 用户登陆功能:用于实现用户登陆。模块的简单流程:用户输入用户名和密码,然后提交,用户登陆模块就会进行验证。Hibernate实现过程设计:1) 用户提交以后,底层首先通过Hibernate API中的Criteria的查询功能,利用用户
26、名来获取用户的Entity对象,Entity对象中封装好了用户的所有信息。如果用户不存在,返回的Entity为Null。2) 从Entity中提取出用户密码、用户状态以及其他信息。3) 用户登陆模块使用2中的信息和用户输入的信息进行验证。2.3.1.3 用户评论发布功能:用户对于某一本书发表评论。模块的简单流程:用户在登陆以后,对于某一本书发表自己的评论,模块将用户发表的评论插入到数据库的表中。Hibernate实现过程设计:1) 用户在发布评论后,用户评论模块首先将用户的用户ID、书籍ID、评论内容以及发表评论的时间都封装到一个Entity对象中。2) 然后调用Hibernate API中的
27、save()来将这些信息保存到数据库的表中。3) 保存成功,用户评论模块会返回一个boolean=true,否则会返回boolean=false。2.3.1.4 用户信息管理功能:实现用户对于自己的信息的管理。模块的简单流程:用户可以修改用户名以外的其他个人注册信息,模块将会更新用户在数据库中的信息。Hibernate实现过程设计:1) 当用户进入修改页面的时候,模块会调用Hibernate API中的Criteria根据用户名来查询出用户Entity,并将用户的当前信息显示在一个页面上。2) 用户可以修改用户能够修改的信息。3) 修改以后,更新模块会重新生成一个新的Entity将所有的信息封
28、装进去,然后,模块调用Hibernate的update()更新用户的信息。4) 修改成功,模块会返回一个boolean=true,否则会返回boolean=false。2.3.1.5 购物车功能:用于记录用户的购书记录,同时用于结算。模块的简单流程:每当用户打开自己的购物车的时候,模块会将数据库中用户最近的购物记录显示出来。同时用户也可以通过它购买书籍。Hibernate实现过程设计:1) 用户打开自己的购物车的时候,模块会调用Hibernate API中的Criteria,根据用户名来调用获取Entity对象,在Entity中除了封装了用户的个人信息外,还有订单信息。如果用户是新用户,那么订
29、单信息为Null。2) 模块调用最近的订单信息,将其显示给用户。3) 同时用户可以通过购买书籍,在这里生成订单,并将订单存入数据库中。2.3.2 管理员模块设计2.3.2.1 增加图书功能:用于增加新图书信息。模块的简单流程:当有新书时,管理员在管理员的增加图书界面将新图书的信息添加到表格中,模块将书籍的消息添加到数据库中。Hibernate的实现过程设计:1) 管理员首先将新图书的信息按照页面要求添加到页面。然后提交。2) 模块首先会将添加的信息进行验证。验证通过的信息将会被封装到Entity中,然后模块调用Hibernate API的save()方法。将所有信息添加到数据库的表中。3) 添
30、加成功,模块返回一个boolean=true,否则返回boolean=false。2.3.2.2 更新图书功能:用于更新图书信息。模块的简单流程:当有的书籍需要修改信息时,管理员首先根据书籍ID寻找出要更新的图书,然后修改图书的信息,提交以后,系统调用更新图书模块来更新图书信息。 Hibernate的实现过程设计:1) 管理员首先根据书籍ID来查询到书籍。2) 模块会根据书籍ID调用Hibernate的Criteria将所有的书籍信息Entity中,并将Entity中各项信息显示在网页上,管理员可以在网页上修改除了ID以外的信息。3) 管理员提交以后,书籍更新的信息被封装到一个新的Entity
31、中,模块调用Hibernate API的update()来更新书籍信息。4) 更新成功,模块返回boolean=true,否则返回boolean=false。2.3.2.3 修改用户状态功能:管理员修改用户的状态。模块的简单流程:当管理员需要修改某一个用户的状态的时候,管理员利用此功能,首先搜索出该用户,得到该用户的当前状态,然后修改该用户的状态。Hibernate的实现过程设计:1) 管理员首先进入搜索页面,输入用户的用户名,搜索出用户的状态信息。2) 然后管理员选择用户的新状态。提交。3) 提交以后,模块掉用Hibernate API的Update方法来修改用户的状态。4) 修改成功,返回
32、boolean=true,否则boolean=false。2.3.2.4 新增图书类别功能:向数据库的类别表中增加新的图书类别。模块的简单流程:当图书类别表中的数据缺失的时候,通过此模块,管理员向表中添加相关新图书类别信息。Hibernate的实现过程设计:1) 管理员首先填写好新图书类别信息。然后提交。2) 提交后,模块会将图书类别信息封装到一个Entity中,然后模块调用Hibernate API中的save()方法,将图书类别信息出入数据库。3) 插入成功,模块返回boolean=true,否则boolean=false。2.3.2.5 修改图书类别功能:修改图书类别表中已经存在的图书类
33、别信息。模块的简单流程:当图书类别表中的数据有问题时,管理员使用该模块。模块首先搜索出要修改的图书类别,搜索出来的信息都显示在网页上,管理员可以在上面进行修改,然后提交,模块会使用新的图书类别信息更新图书类别表中的过时信息。Hibernate的实现过程设计:1) 管理员通过图书类别名称搜索图书类别,模块会调用Hibernate API中的Criteria来寻找出管理员寻找的图书类别,然后将这个图书类别的所有信息封装到一个Entity中。2) 模块将这个图书类别Entity的信息,显示在网页上,管理员可以进行修改。3) 修改以后,提交。模块会将新的图书类别信息封装到一个新的Entity中,将调用
34、Hibernate API中的update()来对数据库中的图书类别进行更新。4) 修改成功,模块返回boolean=true,否则boolean=false。2.3.2.6 管理员登陆功能:管理员进行登陆。模块的简单流程:管理员进入管理员登陆界面,然后输入相关登陆信息,模块从数据库中提取出管理员的信息,并将其封装到一个Entity实体中,然后与管理员输入的信息进行比对。Hibernate的实现过程设计:1) 管理员输入登录信息。模块根据用户的用户名获取出用户的信息,这些封装到一个Entity实体中。2) 然后将实体中的数据与管理员输入的信息进行比对。2.3.2.7 超级管理员增加管理员功能:
35、超级管理员增加系统新的管理员。模块的简单流程:超级管理员进入添加管理员页面,添加管理员相关信息,提交,模块将管理员的信息插入到数据库中。Hibernate的实现过程设计:1) 超级管理员进入添加管理员的页面,添加新增管理员的信息,提交。2) 提交以后,模块将管理员的信息封装到一个Entity中,然后调用Hibernate API中的save()方法将新增管理员的信息插入到数据库中。3) 插入成功,模块返回一个boolean=true,否则boolean=false。2.3.2.8 超级管理员修改管理员信息功能:超级管理员通过此模块修改管理员的相关信息。模块的简单流程:超级管理员首先搜索出要修改
36、的管理员,系统返回给超级管理员的是该管理员的信息页面,超级管理员可以再上面修改信息,提交,模块将更新该管理员的信息。Hibernate的实现过程设计:1) 超级管理员搜索管理员,模块通过搜索信息调用Hibernate API的Criteria来获取该管理员的Entity,该实体封装了该管理员的所有信息。2) 系统以页面形式返回给超级管理员,超级管理员通过该网页进行修改该管理员的信息。然后提交。3) 提交以后,模块会将管理员的新信息封装到一个新的Entity中,然后调用Hibernate API中的update(),将管理员的信息进行更新。4) 更新成功,返回结果为boolean=true,否则
37、boolean=false。2.3.3 系统模块设计2.3.3.1 RSS系统功能:用户可以通过RSS系统来定制购书网站里的特定信息。模块的简单流程:RSS系统能够获取特定定制特定信息,将其反馈给用户。Hibernate的实现过程设计:RSS系统调用DAO中的子模块,通过此子模块,RSS能够获得特定信息。2.4 本章小结本章主要简单的介绍了网上购书系统的结构,以及全面的介绍了使用Hibernate设计对于每个功能的实现。本章从宏观和微观的角度介绍了本系统。在下一节,将会介绍下Hibernate:Hibernate的ORM模型,Hibernate的工作原理,Hibernate的核心接口,Hibe
38、rnate的API中的主要部分,以及Hibernate的优势和劣势。第3章 Hibernate基本技术介绍33.1 本章内容介绍在本章将会涉及以下内容:l Hibernate是什么,将会从Hibernate的定义, Hibernate的使用场合,和为什么要使用Hibernate。l 的主要内容,将会介绍Hibernate的框架,工作原理,核心接口以及Hibernate API中的主要部分。l Hibernate的优势劣势,将会用Hibernate和JDBC进行对比,来说明Hibernate的优势和劣势。3.2 Hibernate是什么在这一节里,我将从三个方面:Hibernate的定义?Hib
39、ernate用在什么场合?为什么要使用Hibernate?Hibernate简单的说,就是和数据库建立会话,然后和数据库进行交互的一种框架。它的定义是Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库1。Hibernate的使用场合是可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。对于为什么要使用Hibernate?主要有
40、以下几点:l Hibernate支持了企业级开发中数据对象的持久化。l 它是轻量级模型,占用资源小。l 它能够让开发人员从繁琐的SQL语言中解脱出来,减轻开发人员的负担。l Hibernate是J2EE标准中的一部分,它的架构已经被融进现代开发中,并且得到了广泛的应用和实践。所以从市场份额来说,它有着非常大的优势。l 最后一点就是,Hibernate是开源框架,并且有专门的维护人员进行维护和更新,所以在未来的发展中,Hibernate的价值将会被不断地扩大。3.3 Hibernate的主要内容3.3.1 Hibernate的框架如Hibernate的定义一样,Hibernate是一个ORM(对
41、象关系映射)框架。在这个框架中,用三个部分:关系数据库、映射文件(.xml)、实体(类似JavaBean结构的对象),通过映射文件,关系数据库中的数据可以和实体进行交互,实体数据通过映射文件将数据存入数据库,从而实现数据的持久化。通过以上可以看出,Hibernate的操作对象是Entity对象,而不是直接的数据。ORM结构如图3.1所示。图3.1 ORM结构图3.3.2 Hibernate的工作原理Hibernate实现ORM映射,必须完成两个配置文件:hibernate.cfg.xml,这个是Hibernate中的主配置文件;同时还有以hbm.xml结尾的配置文件,它里面记录了关系数据库中的
42、哪个表应该和哪个实体进行映射,为了使整个文件能够工作,它还必须在hibernate.cfg.xml中注册。下面我将详细介绍下这两个配置文件中的主要属性。3.3.2.1 hibernate.cfg.xml文件它是Hibernate中的核心文件,由于Hibernate是JDBC的轻量级封装。所以Hibernate的在底层实现过程中使用了JDBC中的API。在hibernate.cfg.xml中,正是配置了相关JDBC的配置。内容如下: 是表示连接的数据库名。是表示访问数据库的用户名。是表示访问数据库的密码。是表示JDBC连接数据库的协议方式,不同的数据库使用的协议不一样,例如MySQL的协议方式为
43、:jdbc:mysql:/主机名:端口号(一般为3306)/数据库名。是表示访问数据库所使用的JDBC驱动。JDBC驱动是Java程序访问数据库的接口驱动程序。Java程序通过JDBC驱动提供的接口进行数据库的访问操作。是表示Hibernate所使用的方言。Hibernate使用方言可以实现数据库的跨平台操作。是注册hbm.xml文件。这些是hibernate.cfg.xml中最重要的配置属性。实现了数据库的会话设置,跨平台操作设置以及映射的注册。3.3.2.2 hbm.xml配置文件hbm.xml配置文件是Hibernate中用于Entity和关系数据库映射的文件,它的主要属性如下: /hibe