Hibernate技术PPT课件_第1页
Hibernate技术PPT课件_第2页
Hibernate技术PPT课件_第3页
Hibernate技术PPT课件_第4页
Hibernate技术PPT课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hibernate Hibernate 框框 架架 技技 术术在本讲您能了解如下知识点在本讲您能了解如下知识点pHibernateHibernate技术基础技术基础q为什么要使用为什么要使用HibernateHibernate工具工具q如何提供一致的数据库访问操作如何提供一致的数据库访问操作q什么时候使用什么时候使用HibernateHibernateqHibernateHibernate系统系统qHibernate Hibernate 框中的主要框中的主要APIAPIHibernateHibernate技术基础技术基础1 1、HibernateHibernate基本概念基本概念(1 1)Hi

2、bernateHibernate技术本质上是一个提供数据访问服务的中间件技术本质上是一个提供数据访问服务的中间件qHibernate Hibernate 是一个面向是一个面向Java Java 环境的对象环境的对象/ /关系数据库映射关系数据库映射工具,它实现工具,它实现把把JavaJava类对应到数据库表中类对应到数据库表中,并且采用了,并且采用了xmlxml技术、技术、Java ReflectionJava Reflection技术等。技术等。qHibernateHibernate不仅提供了从不仅提供了从JavaJava类到数据表的映射,也提供了类到数据表的映射,也提供了数据查询和恢复等机

3、制。从而可以大幅度减少开发时人工数据查询和恢复等机制。从而可以大幅度减少开发时人工使用使用SQL SQL 和和JDBC APIJDBC API处理数据的时间。处理数据的时间。(2 2)HibernateHibernate是一个开放源代码的对象关系映射框架是一个开放源代码的对象关系映射框架q它对它对JDBCJDBC进行了非常轻量级的对象封装,从而使用面向对象进行了非常轻量级的对象封装,从而使用面向对象编程思维(编程思维(OOPOOP)来操纵关系型的数据库。)来操纵关系型的数据库。qHibernateHibernate可以应用在任何使用可以应用在任何使用JDBCJDBC的场合,既可以在的场合,既可

4、以在J2SEJ2SE的应用程序中使用,也可以在的应用程序中使用,也可以在J2EE WebJ2EE Web应用系统中使用它。应用系统中使用它。面向开发人员简化面向开发人员简化开发过程开发过程2 2、为什么要应用、为什么要应用HibernateHibernate技术技术-对设计人员而言对设计人员而言对设计人员达到持久层设计上的解耦对设计人员达到持久层设计上的解耦 ,解耦合设计的目标,解耦合设计的目标(1 1)达到业务逻辑与数据逻辑相分离)达到业务逻辑与数据逻辑相分离(业务人员不需要考(业务人员不需要考虑数据表的逻辑结构)虑数据表的逻辑结构)(2 2)达到数据访问逻辑与物理数据库的结构相分离)达到数

5、据访问逻辑与物理数据库的结构相分离(数据(数据访问逻辑的开发者不再关心不同的物理数据库的差异性)访问逻辑的开发者不再关心不同的物理数据库的差异性)注意注意:从设计上来讲,:从设计上来讲,hibernatehibernate通过对集合、继承的支持,使通过对集合、继承的支持,使开发人员能够建立一个关系足够开发人员能够建立一个关系足够“复杂复杂”的对象模型的对象模型面向设计人员达到面向设计人员达到“解耦解耦”设计目标设计目标3 3、为什么要应用、为什么要应用HibernateHibernate技术技术-对开发人员而言对开发人员而言(1 1)提高了编码的效率)提高了编码的效率pHibernateHib

6、ernate是一个是一个ORMORM工具,它不仅仅是实现了数据库访工具,它不仅仅是实现了数据库访问性能优化和与数据库交互的常用操作(问性能优化和与数据库交互的常用操作(CRUDCRUD)p还将数据表与对象进行了关联,让开发人员可以脱离数还将数据表与对象进行了关联,让开发人员可以脱离数据库系统,而直接针对对象来与数据库表进行交互。据库系统,而直接针对对象来与数据库表进行交互。(2 2)提高了数据库访问性能)提高了数据库访问性能开发人员可以不再需要考虑与数据库交互的性能问题,如开发人员可以不再需要考虑与数据库交互的性能问题,如连接池、数据缓存等等连接池、数据缓存等等-因为因为HibernateHi

7、bernate提供了对这些方面提供了对这些方面的功能实现:数据读取和更新、事务管理、数据连接池、查询的功能实现:数据读取和更新、事务管理、数据连接池、查询和实体关系管理等。和实体关系管理等。 (3 3)HibernateHibernate使设计和开发人员达到下面的效果使设计和开发人员达到下面的效果q对设计人员达到持久层设计上的解耦对设计人员达到持久层设计上的解耦q对开发人员达到简化持久层的编程实现对开发人员达到简化持久层的编程实现您写过这样的您写过这样的SQL语句吗语句吗4 4、为什么要提出、为什么要提出HibernateHibernate(1 1)HibernateHibernate是是JD

8、BCJDBC的轻量级的对象封装的轻量级的对象封装 做为做为JDBCJDBC的替代者出现的的替代者出现的-不仅提供不仅提供ORMORM映射服务,还映射服务,还提供数据查询和数据缓存功能提供数据查询和数据缓存功能(2 2)优化)优化EJBEJB中的中的CMB EntityBeanCMB EntityBean 当然当然EJBEJB具有分布式的特性,而具有分布式的特性,而HibernateHibernate则不具备则不具备 简化简化JDBCJDBC和优化和优化EJBEJB当然只能是优化当然只能是优化而不是代替而不是代替(3 3)轻量级的对象封装的具体体现)轻量级的对象封装的具体体现p对对JDBCJDB

9、C的数据访问操作简化:以面向对象的编程形式实现的数据访问操作简化:以面向对象的编程形式实现对数据库表中数据对数据库表中数据 CRUDCRUD操作操作-避免复杂的避免复杂的SQLSQL语句出现。语句出现。p对对JDBCJDBC的功能扩展:采用面向对象中的对象之间的关系如的功能扩展:采用面向对象中的对象之间的关系如“关联、继承、聚合和组合关联、继承、聚合和组合”等形式来解决数据库表之间存等形式来解决数据库表之间存在一定的关系的数据访问(在一定的关系的数据访问(O/R MappingO/R Mapping技术)技术) 。p对对JDBCJDBC的数据访问性能改进:提供了事务管理,多种形式的数据访问性能

10、改进:提供了事务管理,多种形式的缓存管理技术,数据并发控制技术等方面。的缓存管理技术,数据并发控制技术等方面。 5 5、HibernateHibernate和和JDBCJDBC在性能上的对比在性能上的对比(1 1)用)用hibernatehibernate开发的系统能提高开发效率和系统的可开发的系统能提高开发效率和系统的可重用性等方面重用性等方面p因为任何封装在因为任何封装在JDBCJDBC之上的东西都不可能有直接去写之上的东西都不可能有直接去写JDBCJDBC快快( (不考虑不考虑cache)cache)。p但通过适当的封装,这样能够降低开发的复杂性,提高开但通过适当的封装,这样能够降低开发

11、的复杂性,提高开发效率和使代码易于维护。发效率和使代码易于维护。因此我们应用了因此我们应用了hibernatehibernate后后系统的速度可能会有影响系统的速度可能会有影响! !(2 2)能够真正实现面向对象的建模)能够真正实现面向对象的建模 用用HibernateHibernate时最大的便利不是在写代码的时候用对象的时最大的便利不是在写代码的时候用对象的操作代替操作代替SQLSQL语句,而是在建模的时候可以用面向对象的思维语句,而是在建模的时候可以用面向对象的思维把很复杂的逻辑用把很复杂的逻辑用UMLUML图表示出来,然后直接转化成实体。图表示出来,然后直接转化成实体。(3 3)JDB

12、C+HibernateJDBC+Hibernate相互结合相互结合p所以我们应该在性能影响太大的地方采用面向对象和关系所以我们应该在性能影响太大的地方采用面向对象和关系相结合的方式相结合的方式p但在更多的地方仍然只能采用对象关联的方式。但在更多的地方仍然只能采用对象关联的方式。这是一种比较合理的这是一种比较合理的设计设计! !我们家中购买了汽车后,也应该我们家中购买了汽车后,也应该还要保留我们原来的自行车还要保留我们原来的自行车! !6 6、如何为应用系统提供统一的一致的数据库访问操作、如何为应用系统提供统一的一致的数据库访问操作 (1 1)JDBCJDBC技术:它是一套技术:它是一套APIA

13、PI而不是一个框架。而不是一个框架。您写过这样的您写过这样的SQL语句吗语句吗(2 2)使用)使用Hibernate Hibernate 框架访问数据库的原理框架访问数据库的原理 您能够从图您能够从图中看出差中看出差别吗?别吗?(3 3)HibernateHibernate与与JDBCJDBC的主要区别的主要区别qHibernateHibernate是是JDBCJDBC的轻量级的对象封装,它是一个独立的对的轻量级的对象封装,它是一个独立的对象持久层框架,和应用服务器或者和象持久层框架,和应用服务器或者和EJBEJB没有什么必然的联没有什么必然的联系。系。qHibernateHibernate可

14、以用在任何可以用在任何JDBCJDBC可以使用的场合,从某种意义可以使用的场合,从某种意义上来说,上来说,HibernateHibernate在任何场合下取代在任何场合下取代JDBCJDBC。 (3 3)HibernateHibernate与与JDBCJDBC的主要区别(续)的主要区别(续)pHibernateHibernate是一个和是一个和JDBCJDBC密切关联的框架,所以密切关联的框架,所以HibernateHibernate的兼容性和的兼容性和JDBCJDBC驱动,和数据库都有一定的关系,但是和驱动,和数据库都有一定的关系,但是和使用它的使用它的JavaJava程序、应用服务器没有任

15、何关系,也不存在程序、应用服务器没有任何关系,也不存在兼容性问题。兼容性问题。pHibernateHibernate是做为是做为JDBCJDBC的替代者出现的,不能用来直接和的替代者出现的,不能用来直接和EJBEJB中的中的Entity BeanEntity Bean做对比做对比-不是代替不是代替EJBEJB而是优化而是优化EJBEJB,在轻量级的容器中也能够应用在轻量级的容器中也能够应用O/R MappingO/R Mapping技术。技术。希望您能够明确这点希望您能够明确这点!(4 4)HibernateHibernate的一些弱点的一些弱点q主要体现在比如对象关系的映射配置过多,控制复杂

16、;事主要体现在比如对象关系的映射配置过多,控制复杂;事务处理也面临各种兼容问题;务处理也面临各种兼容问题;p一个持久性类不能映射到多个表一个持久性类不能映射到多个表pHibernateHibernate内置映射内置映射类型复杂类型复杂化化 pIDID规定化生成:规定化生成:HibernateHibernate中内置标识符生成器给表单中内置标识符生成器给表单IDID自动自动生成提供了方便,但却不能自定义各种生成提供了方便,但却不能自定义各种IDID形式。形式。p另外不支另外不支持动态映持动态映射数据库射数据库表表7 7、什么时候使用、什么时候使用HibernateHibernate (1 1)自

17、己没有数据持久层开发能力)自己没有数据持久层开发能力p由于由于hibernatehibernate为我们提供了一套成熟的为我们提供了一套成熟的O/R MappingO/R Mapping的的模型,应用它将能够在短时间内构建适合业务需求的数模型,应用它将能够在短时间内构建适合业务需求的数据持久层的解决方案据持久层的解决方案p当然,前提是要对当然,前提是要对hibernatehibernate有基本的使用开发能力。有基本的使用开发能力。(2 2)对)对JDBCJDBC底层开发不甚熟悉者底层开发不甚熟悉者p由于由于hibernatehibernate实现了对实现了对JDBCJDBC底层的调用封装,这

18、样将能底层的调用封装,这样将能够统一对不同类型的数据库系统的支持。够统一对不同类型的数据库系统的支持。p因此,当开发者在缺乏对因此,当开发者在缺乏对JDBCJDBC底层调用的了解时,使用底层调用的了解时,使用HibernateHibernate则可以达到事半功倍的效果。则可以达到事半功倍的效果。我们不只是我们不只是CRUD,还,还有许多其它的要求!有许多其它的要求!我们的开发人员不能很好地把握我们的开发人员不能很好地把握JDBC在在不同的物理数据库方面的差异性!不同的物理数据库方面的差异性!(3 3)自己开发的数据持久层不能满足业务需求)自己开发的数据持久层不能满足业务需求p如果缺乏对如果缺乏

19、对JDBCJDBC的了解和数据持久层开发的经验,可能自的了解和数据持久层开发的经验,可能自己开发的数据持久层会慢慢的不满足业务需求。己开发的数据持久层会慢慢的不满足业务需求。p比如在数据缓存、连接池管理、多数据库支持等等方面,比如在数据缓存、连接池管理、多数据库支持等等方面,hibernatehibernate在上述方面有比较出色的表现。在上述方面有比较出色的表现。p因此,我们可以在不影响业务功能实现的开发前提下可以因此,我们可以在不影响业务功能实现的开发前提下可以考虑采用该框架。考虑采用该框架。 (4 4)在团队开发中希望能够统一持久层开发)在团队开发中希望能够统一持久层开发p从技术上来分类

20、,我们一般是把从技术上来分类,我们一般是把hibernatehibernate称为称为O/R O/R MappingMapping开发框架。开发框架。p因此,既然是框架,那么如果团队中的各个成员对这个框因此,既然是框架,那么如果团队中的各个成员对这个框架比较熟悉的话,那么我们将可以统一团队的开发过程,架比较熟悉的话,那么我们将可以统一团队的开发过程,从而减少沟通的频率,同时也能够促进协同开发和数据共从而减少沟通的频率,同时也能够促进协同开发和数据共享。享。团队有共同的目标和平台!团队有共同的目标和平台!自己开发不仅费时、而且效自己开发不仅费时、而且效果也不理想的情况下!果也不理想的情况下!(5

21、 5)希望我们的应用系统不依赖于某种特定的数据库)希望我们的应用系统不依赖于某种特定的数据库p希望应用系统能够满足不同的物理数据库系统的差别所带希望应用系统能够满足不同的物理数据库系统的差别所带来的问题来的问题 p如何设计适用于多种类型数据库的通用产品而不是提供多如何设计适用于多种类型数据库的通用产品而不是提供多个产品版本个产品版本 u尽量使用标准通用的尽量使用标准通用的SQLSQL语句语句u尽量不使用各数据库方言和某种数据库特有的函数或者数尽量不使用各数据库方言和某种数据库特有的函数或者数据类型等据类型等u将系统的配置参数保存在一个将系统的配置参数保存在一个propertiespropert

22、ies文件或者文件或者* *.xml.xml中,然后在代码中利用类似中,然后在代码中利用类似Configuration.setProperties(Properties pro)Configuration.setProperties(Properties pro)方法载方法载入配置参数文件。入配置参数文件。这可能是我们选择这可能是我们选择Hibernate的的一个主要的考虑!一个主要的考虑!(6 6)优化数据查)优化数据查询询 大量重复查询同一数据源(如淘宝网中重复查询同大量重复查询同一数据源(如淘宝网中重复查询同一商品);查询中涉及大量关联关系;一商品);查询中涉及大量关联关系;8 8、Hi

23、bernateHibernate系统(冬眠)系统(冬眠)(1 1)HibernateHibernate的设计者的设计者Gavin KingGavin King Gavin KingGavin King是是HibernateHibernate的作者,的作者,EJB3.0EJB3.0专家委员会成员,专家委员会成员,JBossJBoss核心成员之核心成员之一。一。HibernateHibernate诞生在诞生在20012001年年1111月。月。(2 2)下载其系统)下载其系统hibernatehibernate是是sourceforgesourceforge的一个子项目,可以从的一个子项目,可以从

24、Hibernate Hibernate 的的网站网站//或者或者http:/http:/上面获得下载的连接。上面获得下载的连接。(3 3)其系统架构)其系统架构pHibernateHibernate内部内部封装了通过封装了通过JDBCJDBC访问数据库的操访问数据库的操作,向上层应用作,向上层应用提供了面向对象提供了面向对象的数据访问的数据访问APIAPI。qHibernateHibernate是是JavaJava应用和关系应用和关系数据库之间的桥数据库之间的桥梁,它负责梁,它负责JavaJava对象和

25、关系数据对象和关系数据之间的映射。之间的映射。(4 4)它是)它是“轻型轻型”的体系结构方的体系结构方案案 我们应用系统中的持久类是一种普通的我们应用系统中的持久类是一种普通的JavaBeanJavaBean(JOPOJOPO),因此不依赖于),因此不依赖于HibernateHibernate的的APIAPI。应用系统可以以最小子集的方式被应用,在方式下应用程应用系统可以以最小子集的方式被应用,在方式下应用程序自己提供序自己提供jdbcjdbc连接,并且自行管理事务。连接,并且自行管理事务。您了解您了解“轻量级轻量级”的含义和要求吗?的含义和要求吗?(5 5)它是一个)它是一个“全面解决全面解

26、决”的体系结构方案的体系结构方案p它是将应用层从底层的它是将应用层从底层的JDBC/JTA/JNDIJDBC/JTA/JNDI等方面的等方面的APIAPI中抽象中抽象出来,而让出来,而让HibernateHibernate来处理这些技术实现的细节来处理这些技术实现的细节p从而可以使我们的应用系统能够屏蔽各个物理数据库系统从而可以使我们的应用系统能够屏蔽各个物理数据库系统的差别的差别 9 9、Hibernate APIHibernate API中包含的一些主要的类中包含的一些主要的类希望重点掌握这些希望重点掌握这些接口的用法!接口的用法! 所应该注意的是所应该注意的是: :由于在由于在HibernateHibernate中使用了中使用了J2EEJ2EE架构中的如架构中的如下技术:下技术:JDBCJDBC、JTAJTA、JNDIJNDI。其中。其中JDBCJDBC是一个支持关系数据库操是一个支持关系数据库操作的一个基础层;它与作的一个基础层;它与JNDIJNDI和和JTAJTA一起结合,使得一起结合,使得HibernateHibernate可以可以方便地集成到方便地集成到J2EEJ2EE应用服务器中去。应用服务器中去。 1010、HibernateHibe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论