




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、利用利用hibernatehibernate实现实现o/r mappingo/r mapping技术技术(hibernate for o/r mappinghibernate for o/r mapping)杨少波杨少波在本讲您能了解如下知识点在本讲您能了解如下知识点(the emphases in teaching materialsthe emphases in teaching materials)phibernatehibernate框架技术及应用框架技术及应用q为什么要使用为什么要使用hibernatehibernate框架框架qhibernatehibernate框架主要的技术特性
2、框架主要的技术特性qhibernatehibernate框架的应用场合框架的应用场合qhibernatehibernate框架系统架构框架系统架构qhibernatehibernate框架中的主要框架中的主要apiapi利用利用hibernatehibernate实现实现o/r mappingo/r mapping技术技术hibernatehibernate框架技术及应用框架技术及应用1 1、有关与、有关与hibernatehibernate有关的一些基本概念有关的一些基本概念(1 1)hibernatehibernate技术本质上是一个提供数据访问服务的中间件技术本质上是一个提供数据访问服务
3、的中间件qhibernatehibernate框架是一个面向框架是一个面向java java 环境的对象环境的对象/ /关系数据库映关系数据库映射工具,它实现射工具,它实现把把javajava类对应到数据库表中类对应到数据库表中,并且采用了,并且采用了xmlxml技术、技术、java reflectionjava reflection技术等。技术等。qhibernatehibernate不仅提供了从不仅提供了从javajava类到数据表的映射,也还提供类到数据表的映射,也还提供了对数据库查询和恢复等方面的机制支持。从而可以大幅了对数据库查询和恢复等方面的机制支持。从而可以大幅度地减少开发时人工
4、使用度地减少开发时人工使用sql sql 和和jdbc apijdbc api处理数据的时间。处理数据的时间。(2 2)hibernatehibernate是一个开放源代码的对象关系映射框架是一个开放源代码的对象关系映射框架q它对它对jdbcjdbc进行了非常轻量级的对象封装,从而使用面向对象进行了非常轻量级的对象封装,从而使用面向对象编程思维(编程思维(oopoop)来操纵关系型的数据库。)来操纵关系型的数据库。qhibernatehibernate可以应用在任何使用可以应用在任何使用jdbcjdbc的场合,既可以在的场合,既可以在j2sej2se的应用程序中使用,也可以在的应用程序中使用,
5、也可以在j2ee webj2ee web应用系统中使用它。应用系统中使用它。面向开发人员简化开发过程面向开发人员简化开发过程2 2、为什么要应用、为什么要应用hibernatehibernate技术技术-对设计人员而言对设计人员而言对设计人员达到持久层设计上的解耦对设计人员达到持久层设计上的解耦 ,解耦合设计的目标,解耦合设计的目标(1 1)达到业务逻辑与数据逻辑相分离)达到业务逻辑与数据逻辑相分离(业务人员不需要考(业务人员不需要考虑数据表的逻辑结构)虑数据表的逻辑结构)(2 2)达到数据访问逻辑与物理数据库的结构相分离)达到数据访问逻辑与物理数据库的结构相分离(数据(数据访问逻辑的开发者不
6、再关心不同的物理数据库的差异性)访问逻辑的开发者不再关心不同的物理数据库的差异性)注意注意:从设计上来讲,:从设计上来讲,hibernatehibernate通过对集合、继承的支持,使通过对集合、继承的支持,使开发人员能够建立一个关系足够开发人员能够建立一个关系足够“复杂复杂”的对象模型。的对象模型。面向设计人员达到面向设计人员达到“解耦解耦”设计目标设计目标3 3、为什么要应用、为什么要应用hibernatehibernate框架框架-对开发人员而言对开发人员而言(1 1)提高了编码的效率)提高了编码的效率phibernatehibernate是一个是一个ormorm工具,它不仅仅是实现了数
7、据库访问工具,它不仅仅是实现了数据库访问性能优化和与数据库交互的常用操作(性能优化和与数据库交互的常用操作(crudcrud)p还将数据表与对象进行了映射关联(还将数据表与对象进行了映射关联(o/r mappingo/r mapping),让开),让开发人员可以脱离数据库系统,而直接针对对象来与数据库表发人员可以脱离数据库系统,而直接针对对象来与数据库表进行交互。进行交互。(2 2)提高了数据库访问的性能)提高了数据库访问的性能p开发人员可以不再需要考虑与数据库交互的性能问题,如开发人员可以不再需要考虑与数据库交互的性能问题,如连接池、数据缓存等等连接池、数据缓存等等-因为因为hibernat
8、ehibernate提供了对这些方提供了对这些方面的功能实现:面的功能实现:p数据读取和更新、事务管理、数据连接池、查询和实体关数据读取和更新、事务管理、数据连接池、查询和实体关系管理等。系管理等。 (3 3)hibernatehibernate使设计和开发人员达到下面的效果使设计和开发人员达到下面的效果q对设计人员达到持久层设计上的解耦对设计人员达到持久层设计上的解耦q对开发人员达到简化持久层的编程实现对开发人员达到简化持久层的编程实现您写过这样的您写过这样的sql语句吗语句吗4 4、为什么要提出、为什么要提出hibernatehibernate(1 1)hibernatehibernate
9、是是jdbcjdbc的轻量级的对象封装的轻量级的对象封装 做为做为jdbcjdbc的替代者出现的的替代者出现的-不仅提供不仅提供ormorm映射服务,还映射服务,还提供数据查询和数据缓存功能提供数据查询和数据缓存功能(2 2)优化)优化ejbejb中的中的cmb entitybeancmb entitybean 当然当然ejbejb具有分布式的特性,而具有分布式的特性,而hibernatehibernate则不具备则不具备 简化简化jdbcjdbc和优化和优化ejbejb当然只能是优化当然只能是优化而不是代替而不是代替(3 3)轻量级的对象封装的具体体现)轻量级的对象封装的具体体现p对对jdb
10、cjdbc的数据访问操作简化:以面向对象的编程形式实现的数据访问操作简化:以面向对象的编程形式实现对数据库表中数据对数据库表中数据 crudcrud操作操作-避免复杂的避免复杂的sqlsql语句出现。语句出现。p对对jdbcjdbc的功能扩展:采用面向对象中的对象之间的关系如的功能扩展:采用面向对象中的对象之间的关系如“关联、继承、聚合和组合关联、继承、聚合和组合”等形式来解决数据库表之间存等形式来解决数据库表之间存在一定的关系的数据访问(在一定的关系的数据访问(o/r mappingo/r mapping技术)技术) 。p对对jdbcjdbc的数据访问性能改进:提供了事务管理,多种形式的数据
11、访问性能改进:提供了事务管理,多种形式的缓存管理技术,数据并发控制技术等方面。的缓存管理技术,数据并发控制技术等方面。 5 5、hibernatehibernate和和jdbcjdbc在性能上的对比在性能上的对比(1 1)用)用hibernatehibernate开发的系统能提高开发效率和系统的可开发的系统能提高开发效率和系统的可重用性等方面重用性等方面p因为任何封装在因为任何封装在jdbcjdbc之上的东西都不可能有直接去写之上的东西都不可能有直接去写jdbcjdbc快快( (不考虑不考虑cache)cache)。p但通过适当的封装,这样能够降低开发的复杂性,提高开但通过适当的封装,这样能够
12、降低开发的复杂性,提高开发效率和使代码易于维护。发效率和使代码易于维护。因此我们应用了因此我们应用了hibernatehibernate后后系统的速度可能会有影响系统的速度可能会有影响! !(2 2)能够真正实现面向对象的建模)能够真正实现面向对象的建模 用用hibernatehibernate时最大的便利不是在写代码的时候用对象的时最大的便利不是在写代码的时候用对象的操作代替操作代替sqlsql语句,而是在建模的时候可以用面向对象的思维语句,而是在建模的时候可以用面向对象的思维把很复杂的逻辑用把很复杂的逻辑用umluml图表示出来,然后直接转化成实体。图表示出来,然后直接转化成实体。(3 3
13、)jdbc+hibernatejdbc+hibernate相互结合相互结合我们应该在性能影响太大的地方采用面向对象和关系相结合我们应该在性能影响太大的地方采用面向对象和关系相结合的方式。的方式。这是一种比较合理的这是一种比较合理的设计设计! !我们家中购买了汽车后,也应该我们家中购买了汽车后,也应该还要保留我们原来的自行车还要保留我们原来的自行车! !6 6、如何为应用系统提供统一的一致的数据库访问操作、如何为应用系统提供统一的一致的数据库访问操作 (1 1)jdbcjdbc技术:它是一套技术:它是一套apiapi而不是一个框架。而不是一个框架。(2 2)使用)使用hibernate hibe
14、rnate 框架访问数据库的原框架访问数据库的原理理 (3 3)hibernatehibernate与与jdbcjdbc的主要区别的主要区别phibernatehibernate是是jdbcjdbc的的轻量级的对象封装,轻量级的对象封装,它是一个独立的对它是一个独立的对象持久层象持久层phibernatehibernate是做为是做为jdbcjdbc的替代者出现的,不能用来直接和的替代者出现的,不能用来直接和ejbejb中的中的entity beanentity bean做对比做对比-不是代替不是代替ejbejb而是优化而是优化ejbejb,在轻量级的容器中也能够应用在轻量级的容器中也能够应用
15、o/r mappingo/r mapping技术。技术。希望您能够明确这点希望您能够明确这点!框架,框架,hibernatehibernate可以用在任何可以用在任何jdbcjdbc可以使用的场合,从某种可以使用的场合,从某种意义上来说,意义上来说,hibernatehibernate在任何场合下取代在任何场合下取代jdbcjdbc。 (4 4)hibernatehibernate的一些弱点的一些弱点q主要体现在比如对象关系的映射配置过多,控制复杂;事主要体现在比如对象关系的映射配置过多,控制复杂;事务处理也面临各种兼容问题;务处理也面临各种兼容问题;p一个持久性类不能映射到多个不同的数据库表
16、一个持久性类不能映射到多个不同的数据库表phibernatehibernate内置映射内置映射类型复杂类型复杂化化 pidid规定化生成:规定化生成:hibernatehibernate中内置标识符生成器给表单中内置标识符生成器给表单idid自自动生成提供了方便,但却不能自定义各种动生成提供了方便,但却不能自定义各种idid形式。形式。p另外不支另外不支持动态映持动态映射数据库射数据库表表7 7、什么时候要应用、什么时候要应用hibernatehibernate (1 1)开发团队中没有数据持久层的开发能力)开发团队中没有数据持久层的开发能力p由于由于hibernatehibernate为我们
17、提供了一套成熟的为我们提供了一套成熟的o/r mappingo/r mapping的模的模型,应用它将能够在短时间内构建适合业务需求的数据持型,应用它将能够在短时间内构建适合业务需求的数据持久层的解决方案。久层的解决方案。p比如在数据缓存、连接池管理、多数据库、分布式事务等比如在数据缓存、连接池管理、多数据库、分布式事务等的支持等等方面,的支持等等方面,hibernatehibernate在上述方面有比较出色的表现。在上述方面有比较出色的表现。我们不只是我们不只是crud,还,还有许多其它的要求!有许多其它的要求!我们的开发人员不能很好地把握我们的开发人员不能很好地把握jdbc在在不同的物理数
18、据库方面的差异性!不同的物理数据库方面的差异性!(2 2)对)对jdbcjdbc底层开发不甚熟悉者底层开发不甚熟悉者p由于由于hibernatehibernate实现了对实现了对jdbcjdbc底层的调用封装,这样将能够底层的调用封装,这样将能够统一对不同类型的数据库系统的支持。统一对不同类型的数据库系统的支持。p因此,当开发者在缺乏对因此,当开发者在缺乏对jdbcjdbc底层调用的了解时,使用底层调用的了解时,使用hibernatehibernate框架则可以达到事半功倍的效果。框架则可以达到事半功倍的效果。(3 3)在团队开发中希望能够统一持久层开发平台)在团队开发中希望能够统一持久层开发
19、平台 可以统一团队的开发过程,从而减少沟通的频率,同时可以统一团队的开发过程,从而减少沟通的频率,同时也能够促进协同开发和数据共享。也能够促进协同开发和数据共享。团队有共同的目标和平台!团队有共同的目标和平台!(4 4)希望我们的应用系统不依赖于某种特定的数据库)希望我们的应用系统不依赖于某种特定的数据库 这一般特别适用于产品类型的软件系统中,但在开发中这一般特别适用于产品类型的软件系统中,但在开发中要遵守一定的规则。要遵守一定的规则。这可能是我们选择这可能是我们选择hibernate的的一个主要的考虑!一个主要的考虑!p尽量使用标准通用的尽量使用标准通用的sqlsql语句语句p尽量不使用各数
20、据库方言和某种数据库特有的函数或者数尽量不使用各数据库方言和某种数据库特有的函数或者数据类型等据类型等p将系统的配置参数保存在一个将系统的配置参数保存在一个propertiesproperties文件或者文件或者* *.xml.xml中,然后在代码中利用类似中,然后在代码中利用类似configuration.setproperties(properties pro)configuration.setproperties(properties pro)方法载方法载入配置参数文件。入配置参数文件。8 8、hibernatehibernate系统(冬眠)系统(冬眠)(1 1)hibernatehib
21、ernate的设计者的设计者gavin kinggavin king gavin kinggavin king是是hibernatehibernate的作者,的作者,ejb3.0ejb3.0专家委员会成员,专家委员会成员,jbossjboss核心成员之核心成员之一。一。hibernatehibernate诞生在诞生在20012001年年1111月。月。(2 2)下载其系统)下载其系统hibernatehibernate是是sourceforgesourceforge的一个子项目,可以从的一个子项目,可以从hibernate hibernate 的的网站网站http:/www.hibernate
22、.org//或者或者http:/http:/上面获得下载的连接。上面获得下载的连接。(3 3)其系统架构)其系统架构phibernatehibernate内部内部封装了通过封装了通过jdbcjdbc访问数据库的操访问数据库的操作,向上层应用作,向上层应用提供了面向对象提供了面向对象的数据访问的数据访问apiapi。qhibernatehibernate是是javajava应用和关系应用和关系数据库之间的桥数据库之间的桥梁,它负责梁,它负责javajava对象和关系数据对象和关系数据之间的映射。之间的映射。(4 4)它是)它是“轻型轻型”的体系结构方
23、的体系结构方案案 从而允许应用系统中的持久类是一种普通的从而允许应用系统中的持久类是一种普通的javabeanjavabean(jopojopo),因此系统本身的核心类不必依赖于),因此系统本身的核心类不必依赖于hibernatehibernate的的apiapi。当然,应用系统本身也可以自己直接提供当然,应用系统本身也可以自己直接提供jdbcjdbc数据库连接,数据库连接,并且自行管理事务。并且自行管理事务。您了解您了解“轻量级轻量级”的含义和要求吗?的含义和要求吗?(5 5)当然它也可以是一个)当然它也可以是一个“全面解决全面解决”的体系结构方案的体系结构方案p它将应用系统从底层的它将应用
24、系统从底层的jdbc/jta/jndijdbc/jta/jndi等方面的等方面的apiapi中抽象中抽象出来,而让出来,而让hibernatehibernate来处理这些技术实现的细节。来处理这些技术实现的细节。p从而可以使我们的应用系统能够屏蔽对各个物理数据库系从而可以使我们的应用系统能够屏蔽对各个物理数据库系统的差别统的差别 9 9、hibernate apihibernate api中包含的一些主要的类中包含的一些主要的类希望重点掌握这些希望重点掌握这些接口的用法!接口的用法! 所应该注意的是所应该注意的是: :由于在由于在hibernatehibernate中使用了中使用了j2eej2ee架构中的如架构中的如下技术:下技术:jdbcjdbc、jtajta、jndijndi。其中。其中jdbcjdbc是一个支持关系数据库操是一个支持关系数据库操作的一个基础层;它与作的一个基础层;它与jndijndi和和jtajta一起结合,使得一起结合,使得hibernatehibernate可以可以方便地集成到方便地集成到j2eej2ee应用服务器中去。应用服务器中去。 1010、hibernatehibernate系统可以运行在两种环境下系统可以运行在两种环境下 hibernatehibernate可以与任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脑恶性肿瘤的护理查房
- 胸中有痰医案讲解
- 2026届广东省六校高三语文上学期第一次联考试卷附答案解析
- 数字化医院建设体系框架
- 安徽省宣城2026届化学高一上期末考试模拟试题含解析
- 全业务技术支撑
- 外科手术后护理与康复指导
- 写好钢笔字的技巧和方法讲解
- 网点沙龙活动策划与执行
- 先进的物流技术
- 生态环境综合整治工程项目投资估算
- CJ/T 341-2010混空轻烃燃气
- 存款代为保管协议书
- 辅导班劳务合同协议
- 宋代汉族服装风格演变及其社会功能
- T∕CWEA 29-2024 水利水电工程砌石坝施工规范
- 日本签证个人信息处理同意书
- JTS-T 245-2023 水运工程土工合成材料试验规程
- 新兵培训课件模板
- 2025年初中语文教师招聘面试八年级上册逐字稿之愚公移山
- 自考《课程与教学论》考试复习题(附答案)
评论
0/150
提交评论