1) 在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session.clear()或者session. Evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象。
2) 对大数据量查询时,慎用list()或者iterator()返回查询结果,
1. 使用List()返回结果时,Hibernate会所有查询结果初始化为持久化对象,结果集较大时,会占用很多的处理时间。
2. 而使用iterator()返回结果时,在每次调用iterator.next()返回对象并使用对象时,Hibernate才调用查询将对应的对象初始化,对于大数据量时,每调用一次查询都会花费较多的时间。当结果集较大,但是含有较大量相同的数据,或者结果集不是全部都会使用时,使用iterator()才有优势。
3. 对于大数据量,使用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进行优化。
9) 大数据量的处理,可以使用无状态Session,好处是对二级缓存的性能优化
statelessSession=sessionFactory.openStatelessSession();
10) 对于大数据量新增、修改、删除操作,可以使用DML风格的HQL语句,好处是会直接绕过内存进行数据处理,JDBC风格,高效
注:以上转自一位博客的内容,仅作为工作参考用。
分享到:
相关推荐
【标题】:“Hibernate4的一些总结” 【描述】:这篇博客主要涵盖了Hibernate4框架在实际开发中的应用和理解,作者通过个人实践对Hibernate4的核心特性和使用技巧进行了深度解析。 【标签】:“源码”和“工具”这...
描述中提到的链接可能是对Hibernate缓存机制的详细技术博客,但具体内容未给出。因此,我们将基于常规的Hibernate缓存知识进行解释。 **一、Hibernate一级缓存** 一级缓存是每个Hibernate Session内的缓存,它是一...
7. **示例应用**:在实际项目中,例如在设计用户系统时,用户可以是普通用户、管理员等多种角色,它们都继承自一个抽象的`User`类,这时可以利用Hibernate的多态查询来统一处理不同类型用户的查询操作。 8. **性能...
例如,书中可能包含了一个基于 Hibernate 构建的博客系统,从需求分析到设计实现的全过程,让读者能够在实践中更好地理解和掌握 Hibernate 的使用技巧。 #### 七、总结 《Hibernate 开发指南》是一本非常适合初学...
该资源可能是提供了一个博客链接,用于指导用户如何找到并下载Hibernate 3.5的完整包。 **标签**:“源码”和“工具”这两个标签暗示了这个压缩包可能包含了Hibernate 3.5的源代码以及可能的一些开发工具或文档。...
总结来说,"博客系统(struts+hibernate+spring)"是一个典型的Java Web项目,通过整合这些框架,可以构建出一个强大且可扩展的博客平台。理解并熟练掌握这些技术,对于提升Java Web开发技能至关重要。
总结,Hibernate 5.2.3.Final版本提供了稳定且功能丰富的ORM服务,对于Java开发者来说,深入理解并熟练运用这些知识点,将有助于提升开发效率和代码质量。参考链接中的博客文章,可获取更多实践案例和详细教程。
总结来说,映射树形结构在Hibernate中是一项重要技能,它涉及到对数据库设计的理解和ORM框架的熟练运用。掌握不同的映射策略以及如何在代码中实现它们,将有助于提升开发效率并优化应用程序性能。通过研究提供的...
总结,通过对Hibernate源码的深度解析,我们可以更深刻地理解ORM的工作机制,这对于优化数据库操作、解决性能问题以及调试代码都大有裨益。在实践中,这种深入的理解能帮助开发者编写出更高效、更稳定的代码,提升...
- **文档背景**:本文档是针对使用MyEclipse进行Hibernate开发的初学者编写的快速入门指南,旨在通过一系列步骤帮助读者掌握使用MyEclipse集成开发环境进行Hibernate应用开发的基本流程。 - **编写环境**: - Sun ...
这篇博客文章将探讨如何在Hibernate中有效地保存和检索这些大型对象。 首先,让我们理解Hibernate对BLOB和CLOB的支持。Hibernate通过使用`@Lob`注解来标记字段,表明它们是大型对象。例如: ```java @Entity ...
这篇博客探讨了如何在Hibernate3中通过原生SQL获取部分字段,并将这些数据映射到具体的对象实例。 首先,原生SQL查询允许开发者绕过Hibernate的HQL(Hibernate Query Language),直接使用数据库的SQL语法进行查询...
总结来说,这篇博客可能涵盖了如何在Hibernate项目中集成Ehcache,包括添加依赖、配置缓存策略、实体类缓存注解等步骤。了解和正确使用Hibernate与Ehcache的缓存机制,能够显著提升Java应用的性能,减少数据库压力,...
根据提供的文件信息,本文将对“jsp源码博客系统(struts+hibernate+spring)130225”这一主题进行深入探讨,并基于标题、描述以及部分已知内容来提炼出相关的IT知识点。 ### 一、JSP源码博客系统概述 #### 1.1 ...
总结来说,`Session.flush()`是Hibernate中不可或缺的一部分,它确保了数据库与应用程序的同步,同时也涉及到了缓存管理、事务控制等多个重要概念。开发者在使用Hibernate时,应当合理运用`flush()`,以提高应用的...
"Lowerthan60's Blog.mht"看起来像是一个网页存档文件,可能包含了作者Lowerthan60关于Hibernate的详细博客文章。这个文件可能涵盖了作者对Hibernate的理解和实践经验,包括示例代码、问题解决策略等内容。 总结,...
总结起来,这个"博客系统(struts+hibernate+spring).rar"项目是一个完整的Java Web应用实例,通过学习和实践,开发者可以深入理解SSH框架的使用,提升JSP、SQL和Web开发的技能。同时,这个项目也是进一步探索其他...
描述部分提到的“博文链接:https://zhaoshijie.iteye.com/blog/998230”虽然没有提供具体信息,但可以推断出这是一个完整的博客文章,其中详细阐述了关于Hibernate二级缓存的使用和实现,可能包括了配置、注解的...
这篇博客"JPA + Hibernate 3 CRUD操作历史审计日志的解决方案"将深入探讨如何实现这一需求。 首先,我们需要理解JPA和Hibernate的基础概念。JPA定义了一组用于持久化Java对象的API,它允许开发者通过面向对象的方式...
总结来说,理解并能正确使用Hibernate中的多对多双向关联是Java开发中的重要技能,涉及到实体设计、映射配置、数据操作和性能优化等多个方面。通过学习提供的博客和相关代码示例,开发者可以深入掌握这一主题,并将...