转http://www.ibm.com/developerworks/cn/java/j-lo-hibernate3/
深度探索四(Hibernate 性能调优)
我们知道 Hibernate 3 去掉了 find 方法,之所以去掉也是考虑到性能问题。因为 find 方法对于缓存只写不读,性能低下,如果您有用到 Hibernate 3 以前的版本,要注意一下。
Hibernate 3
以前版本在普通情况下持久化对象时会把该对象的属性全都加载进来,即使有些大对象我们用不到。因为延迟加载属性只能作用在类级别,Hibernate 3
允许我们在属性级别上应用延迟加载功能,这样就可以有选择的加载对象的属性了。设置也很简单,只需在属性的 get 方法上加入
@Basic(fetch = FetchType.LAZY) 这行代码就可以了,然后我们需要增强该类,通过 Ant
脚本来加强就可,很简单,就不给出代码了,要不然加入的注释将被忽略。
如果你使用 hbm 格式来映射文件的话,那么在属性行加入 lazy=true
即可。
以上讲的是属性级别的延迟加载,类级别的延迟加载大家也要灵活应用,毕竟它对提升性能还是很有帮助的。
我们上面也提到了关于大数据量缓存的问题,提到对于那些不常用的数据要及时清理缓存,我们可以用 session 的 clear 或
evict 方法,养成好习惯,省着一旦出现性能瓶颈时盲目。对于监控性能的一些工具大家可以自己研究一下,比如 loadrunner
等都是很不错的。
分享到:
相关推荐
- **延迟加载禁用**:在不需要的时候关闭延迟加载,避免加载无关对象。 - **开启二级缓存统计**:通过监控来发现潜在的性能问题。 以上是对Hibernate性能调优的一些关键点,实际应用中,还需要根据具体项目需求和...
3. **属性延迟加载**:只加载实体的主键等基本信息,当需要其他属性时才发起查询。 #### 七、方法选用 1. **List/Set vs Iterator**:对于大规模数据集,使用 Iterator 可以有效地减少内存占用,因为它不一次性...
它支持延迟加载、联接查询等功能,使代码更加简洁且易于维护。 2. **Native SQL**:在某些情况下,使用原生SQL可能更有优势,特别是在需要执行复杂查询或利用特定数据库功能时。 3. **性能对比**:虽然HQL提供了...
在 Hibernate 框架中,延迟加载(Lazy Loading)是一种非常重要的优化技术,它能够有效地减少数据库查询次数,提高应用性能。通常,在多对多或者一对多的关系中,延迟加载能够避免 N+1 查询问题。本文将详细探讨 ...
通过将`hibernate.show_sql`属性设置为`true`,可以查看Hibernate执行的所有SQL语句,这对于调试和性能调优非常有帮助。不过需要注意的是,在生产环境中应谨慎使用此选项,以免影响性能。 #### 十、综合优化技术栈 ...
《Hibernate性能优化共9页.pdf》的压缩包文件聚焦于Java开发中的一个重要框架——Hibernate的性能调优。Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作,但同时也可能带来性能问题。以下...
- **属性延迟加载**:对对象的某些属性进行延迟加载,减少初始化时的数据加载量。 #### 七、方法选用 1. **结果集处理**:使用ScrollableResults或Iterator替代List或Set,以避免一次性加载大量数据导致内存溢出。...
- Hibernate的懒加载机制允许延迟加载关联的对象,避免了一次性加载大量数据。在one-to-many或many-to-one关系中,将`lazy="true"`设置为默认,可确保只有在真正需要时才加载关联的对象,从而减少不必要的数据库...
2. 延迟加载:Hibernate的懒加载机制可以降低内存消耗,但过多的延迟加载可能导致大量小查询,增加数据库压力。合理设计实体关系,适时使用立即加载或选择性加载,避免N+1查询问题。 四、关联映射优化 1. 一对多...
7. **延迟加载(Lazy Loading)**:为了优化性能,Hibernate允许对象的属性或关联关系在需要时才加载,这就是延迟加载。这在处理大数据量时非常有用,避免了一次性加载过多数据导致的内存压力。 8. **事件监听器和...
5. 可配置的延迟加载:通过注解可以控制属性或关联关系的延迟加载行为。 四、实战应用 1. 创建实体类:利用@Entity、@Table、@Id等注解创建符合数据库结构的Java实体类。 2. 数据库操作:使用Session的save()、...
8. **延迟加载和立即加载**:了解何时使用延迟加载和立即加载,以及它们对性能的影响。 9. **性能调优**:通过案例分析,学习如何对Hibernate应用进行性能优化,包括查询优化、减少数据库访问、合理使用缓存等策略...
例如,级联操作允许一次操作就能影响到多个相关对象,延迟加载则可以提高性能,避免不必要的数据加载。 Hibernate还支持缓存机制,包括第一级缓存(Session级别的缓存)和第二级缓存(SessionFactory级别的缓存)。...
4. 高级特性:深入讨论了懒加载、级联操作、缓存机制(一级缓存和二级缓存)、延迟加载和代理对象等高级特性,帮助读者理解Hibernate的内部工作原理。 5. 查询优化:分析了HQL和SQL的性能差异,介绍了如何使用...
7. **性能优化**:包括延迟加载(Lazy Loading)、批处理(Batch Processing)、缓存策略调整等,这些都可以提升Hibernate应用的性能。 8. **查询优化**:避免N+1查询问题,使用JOIN fetch提前加载关联数据,使用...
在Hibernate中,懒加载(Lazy Loading)是一种延迟加载策略,它允许我们在需要时才加载关联的对象,而不是在初始加载实体时一次性加载所有关联数据。 懒加载的基本思想是减少数据库交互,提高应用程序性能。在单端...
6. **延迟加载和懒加载**:理解何时及如何使用这些特性来提高性能。 7. **实体生命周期**:了解Hibernate如何处理对象的创建、更新、删除等状态变化。 8. **性能调优**:包括批处理、连接池配置、查询优化等方面的...
8. **Hibernate性能调优**:讨论如何优化查询性能,减少数据库访问次数,以及合理设置缓存策略等。 9. **Hibernate与Junction(或其他框架)集成**:例如,如何将Hibernate与其他Java框架如Spring整合,实现更高效...
9. **性能调优**:提供关于如何提高Hibernate性能的建议,如批处理、延迟加载、缓存策略调整等。 10. **其他高级特性**:包括双向关联的维护、集合的有序性和索引、复合主键的处理、子类继承的映射等。 ...