`
mlc0202
  • 浏览: 103030 次
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate性能测试

 
阅读更多

在向大家详细介绍Hibernate性能测试之前,首先让大家了解下使用Hibernate处理大数据量,然后全面介绍Hibernate性能测试。

近日为是否在项目中进行Hibernate性能测试,有一些总结,

1.在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session.clear()或者session. Evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象。

2.对大数据量查询时,慎用list()或者iterator()返回查询结果,


  • 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。
  • 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。
  • 对于大数据量,使用qry.scroll()可以得到较好的处理速度以及性能。而且直接对结果集向前向后滚动。


3.对于关联操作,Hibernate虽然可以表达复杂的数据关系,但请慎用,使数据关系较为简单时会得到较好的效率,特别是较深层次的关联时,性能会很差。

4.对含有关联的PO(持久化对象)时,若default-cascade="all"或者 “save-update”,新增PO时,请注意对PO中的集合的赋值操作,因为有可能使得多执行一次update操作。

5.在一对多、多对一的关系中,使用延迟加载机制,会使不少的对象在使用时方会初始化,这样可使得节省内存空间以及减少数据库的负荷,而且若PO中的集合没有被使用时,就可减少互数据库的交互从而减少处理时间。

6.对于大数据量新增、修改、删除操作或者是对大数据量的查询,与数据库的交互次数是决定处理时间的最重要因素,减少交互的次数是提升效率的最好途径,所以在开发过程中,请将show_sql设置为true,深入了解Hibernate的处理过程,尝试不同的方式,可以使得效率提升。

7.Hibernate是以JDBC为基础,但是Hibernate是对JDBC的优化,其中使用Hibernate的缓冲机制会使性能提升,如使用二级缓存以及查询缓存,若命中率较高明,性能会是到大幅提升。

8.Hibernate可以通过设置hibernate.jdbc.fetch_size,hibernate.jdbc.batch_size等属性,对Hibernate进行优化。

以上是介绍Hibernate性能测试

分享到:
评论

相关推荐

    hibernate性能测试代码

    详见博客 http://blog.csdn.net/hanlin0605/article/details/54834717

    hibernate_5.1包

    hibernate-testing: 支持单元测试。 hibernate-swarmcache:支持SwarmCache,一个简单而功能强大的分布式缓存机制。它使用IP组播来有效地在缓存的实例之间进行通信。它是快速提高集群式Web应用程序的性能的理想...

    Hibernate+中文文档

    1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...

    hibernate基础教程

    Hibernate中使用了一级缓存和二级缓存的机制来提高程序的性能. 一 为什么要使用缓存? 缓存是一块存储区域,可能是一块内存,也可能是一块硬盘.缓存能起到缓冲的作用,把程序经常使用...

    hibernate3.2中文文档(chm格式)

    1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...

    HibernateAPI中文版.chm

    1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...

    Hibernate实战(第2版 中文高清版)

     16.5.4 考虑性能基准   16.6 小结   第17章 JBoss Seam简介   17.1 Java EE 5.0编程模型   17.1.1 JSF详解   17.1.2 EJB 3.0详解   17.1.3 用JSF和EJB 3.0编写Web应用程序   17.1.4 分析应用程序  ...

    Hibernate中文详细学习文档

    1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...

    Hibernate 中文 html 帮助文档

    1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...

    最全Hibernate 参考文档

    10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围...

    hibernate 体系结构与配置 参考文档(html)

    部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2. 获得...

    Hibernate教程

    11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session刷出(flush) 11.11. 传播性持久化(transitive persistence) 11.12. 使用元数据 12. 事务和并发 12.1. Session和事务...

    hibernate笔记

    课程内容 5 1 HelloWorld 5 2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping 5 3 常见的0/R框架(了解) 5 ...9 写测试类Main,在Main中对Student对象进行直接的存储测试 6 10 FAQ: 6

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    1.4.3. 部署与测试 1.5. 总结 2. 体系结构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 2.5. 上下文相关的(Contextual)Session 3. 配置 3.1. 可编程的配置方式 3.2...

    hibernate3.04中文文档.chm

    11.7. 自动状态检测 11.8. 删除持久对象 11.9. 在两个不同数据库间复制对象 11.10. Session刷出(flush) 11.11. 传播性持久化(transitive persistence) 11.12. 使用元数据 12. 事务和并发 12.1. Session和事务...

    SpringMVC、Mybatis、Hibernate、Bootstrap、jQuery、HTML5、SpringSecurity、Lucene、Ehcache

    提高性能)、Lucene 4.10.4和Quartz 2.2.1(定时生成索引)、JUnit 4.12(单元测试)、Google Guava Collections 18.0(性能更好的集合工具类库)、Log4j(记录日志)等等。 前端主要技术: Bootstrap 3.3.4、HTML5、jQuery ...

    Hibernate3+中文参考文档

    10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化(transitive persistence) 10.12. 使用元数据 11. 事务和并发 11.1. Session和事务范围...

    jpa-hibernate-jdbc:比较同一个数据库的JPA,Hibernate和JDBC的性能

    毋庸置疑,许多对ORM概念不熟悉的开发人员遇到了这样的基准测试,他们害怕摆脱ORM,其中许多人从不敢回头对性能差异是归因于ORM还是什至是归根结底。真实的。 毫无疑问,应用程序性能(和安全性)是(至少应该是)...

    hibernate 框架详解

    20. 提升性能 20.1. 抓取策略(Fetching strategies) 20.1.1. 操作延迟加载的关联 20.1.2. 调整抓取策略(Tuning fetch strategies) 20.1.3. 单端关联代理(Single-ended association proxies) ...

Global site tag (gtag.js) - Google Analytics