Hibernate对象管理研究.docxVIP

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

?

?

Hibernate对象管理研究

?

?

王琦+袁鹏博+陈义明

摘要:该文分析了Hibernate框架在应用程序持久层的位置、原理和重要意义。深入研究了Hibernate对象生命周期中的三种状态及其转化关系,并用实际开发中的典型程序段进行了直观形象地说明。阐明了Hibernate的Session缓存对数据持久性能的优化机制[1]。对准确、高效地操作Hibernate对象,编写高质量的持久层应用程序具有重要的参考价值。

关键词:Hibernate实体对象;生命周期;Session缓存;ORM

:TP311:A:1009-3044(2014)34-8165-02

Java是一种纯粹的面向对象语言,适合于对现实世界的行为进行建模。JavaEE(JavaEnterpriseEdition)是Sun公司(现已被Oracle公司收购)提出的企业级分布式应用开发规范。因其开放性,有大量优秀的第三方软件公司提供组件支持而受到软件开发者的普遍推崇。

目前,大量的信息系统使用的都是关系型数据库,即以二维表的形式存储数据,应用系统将处理的数据长久地存储到数据库的过程叫做持久化。由于JavaEE系统操作的都是对象,持久化过程需要将对象转成关系表存储。反过来,应用系统操纵关系表中的数据时,需要将取出来的数据封装为java能够操作的对象。上述正反过程叫做ORM(Object-RelationshipMapping,对象关系映射)。为了避免重复书写ORM代码,给系统维护带来不便,同时也为了提高软件开发效率及质量,一些优秀的ORM映射框架脱颖而出,Hibernate就是一款优秀的ORM映射框架[1-2]。

1Hibernate框架及ORM

Hibernate是JDBC(JavaDatabaseConnection,java数据库连接)轻量级的对象封装,是一个独立的对象持久层框架。具有如下显著优势:

1)应用程序在访问数据库时,Hibernate简化了数据访问层代码,并且对这些代码进行了封装;

2)Hibernate是轻量级框架,很灵活、性能非常好,支持多种数据库平台;

3)具有相对的独立性,如果底层数据库发生改变,修改持久层配置文件即可。只要提供的API(ApplicationProgrammingInterface)不变,则上层的业务逻辑层不用修改[3];

Hibernate框架有两个重要功能:

1)对象关系映射ORM

通常来说,一个持久化类对应数据库的一张表,类的每个实例对应表中的一条记录,对象的属性对应表的一个字段,关系数据表之间的关系体现为对象之间的关联关系。面向对象和面向关系概念之间的对应关系如表1所示[4]:

2)对象管理

ORM(对象关系映射)在关系型数据库中的表和应用程序中对象之间作一个自动的映射关联会起到很大的作用,而在实际操作数据库时,只须通过HQL(HibernateQueryLanguage对象操作语言)直接操纵对象即可。Hibernate框架负责管理对象,其中的ORM工具会自动将对象的操作转换为SQL语句操作并进行事务管理。

2Hibernate实体对象生命周期及状态转化[3]

2.1实体对象生命周期[3]

在java语言中,当用new关键词开辟内存空间创建一个Java对象(以Customer对象为例)时,这个Java对象就开始进入其生命周期。如果没有变量对该对象进行引用,就结束其生命周期,而其所占用的内存就会被JVM的垃圾回收器回收。

应用Hibernate框架进行持久管理,支持下列三种对象状态:

1)临时状态(Transient):当用new语句创建临时的一个对象,这个对象就占用了内存;但此时该对象在数据库中还没有对应记录,没有给对象分配持久化标识符或是还没有被持久化,与Hibernate的Session毫无关系。Java对象处于临时状态就称为临时对象[4-6]。

2)持久化状态(Persistent):临时对象或是游离状态通过调用session的相应方法转化为持久化对象,此时已被分配到一个持久化标识符,在数据库中已有了相关记录;同时被加载到Session缓存中,与Session的实例关联,服从Session的统一调度。Java对象处于持久化状态下就称为持久化对象[4-6]。

3)游离(脱管)状态(Detached):该状态下的对象已经被持久化过,是由持久化对象转化而来。即使不在session缓存中,但还会被分配一个持久化标志符,也就是在数据库中还有相对应的数据,这是不同于临时对象的。当相关Session被关闭后,调用相应的Session方法,但还是能够重新进入到一个新的会话缓存中。Java对象处于游离状态就称为游离对象[4-6]。

Hibernate实体对象三种状态的特

文档评论(0)

152****7564 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档