基于Hibernate数据操作效率提升研究.docVIP

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

基于Hibernate数据操作效率提升研究   摘 要 一般情况下,Hibernate在处理批量数据和操作具有关联关系数据的时候,其持久化操作的效率会依赖于配置文件中一些属性的设置。根据系统需求,正确设置影响数据操作效率的属性,将会大大减少对数据操作的执行时间,节约系统的资源开销。   关键词 Hibernate 操作效率 配置 延迟加载   中图分类号:TP311 文献标识码:A   1 Hibernate简介   Hibernate是一个优秀的数据持久化工具,是一个开放源代码的对象关系映射框架,它使用配置文件对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲地使用对象编程的思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate有5个核心接口,分别为: Configuration 、SessionFactory、Session、Transaction、Query。在项目开发中,设计数据查询和持久化时都会用到这5个核心接口。通过这些接口,可以对Hibernate的事务加以控制。   1.1 Configuration接口   Configuration根据配置好的hibernate.cfg.xml文件来创建一个Configuration类的实例,负责配置并启动Hibernate,并创建SessionFactory对象。   1.2 SessionFactory接口   SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session实例。SessionFactory实例一旦构造完毕,就会被赋予特定的配置信息,Configuration实例的任何变更将不会影响到已经创建好的SessionFactory实例。   1.3 Session接口   Session是hibernate进行持久化操作的基础,相当于JDBC的Connection,它提供了许多持久化的方法,如save()、delete()、update()、get()等,通过这些方法,实现对对象的增删改查(CRUD)操作。   1.4 Transaction接口   Transaction接口负责开始一个事务相关的操作。   1.5 Query接口   Query接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。   2 Hibernate的数据操作效率   由于Hibernate对JDBC只进行了轻量级的封装,所有对Hibenate的操作最终都将转换为JDBC的操作,在处理批量数据的时候,会显得力不从心;Hibernate的持久化操作肯定会涉及含有一对多或多对一关联关系的数据,具有关联关系的一方和多方在维护关联数据的时候,配置文件中一些属性的设置,也会影响执行数据库交互语句的数量,进而影响程序执行效率。   3 提高Hibernate的数据操作效率的方法   3.1优化Hibernate配置   为了持久对象的同步,Hibernate的delete和update对于大量数据操作只能按照主键一条条来操作,并且都是先查询,然后进行相关操作,因此效率相对JDBC来说有一些低,但只要对它的配置进行合理优化,也会取得令人满意的速度。首先要在Hibernate的配置文件 hibernate.cfg.xml中设置批量尺寸属性“hibernate.jdbc.batch_size”,对于oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size值为:30或50,性能会有明显提升,如果超出100,反而会消耗内存,性能提升不明显。其次推荐关闭Hibernate的二级缓存,配置如下:         ....... Fetch Size值,如50 false   .......         3.2使用延迟加载策略   当Hibernate查询的数据加载时,与其关联的数据也自动加载,这称为即时加载。但在实际应用中,一些关联数据可能并不会用到,所以为了避免一些无谓的性能开销,Hibernate引入了延迟加载机制,延迟加载就是当程序真正需要关联数据的时候,才开始执行加载操作,Hibernate提供了实体对象的延迟加载、集合的延迟加载和属性的延迟加载。以下以集合的延迟加载为例,来进行lazy属性的设置:     

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档