Hibernate 性能调优 属性延迟加载

本文探讨了Hibernate3中去除find方法的原因及其对性能的影响,并介绍了如何在属性级别应用延迟加载功能,以实现更高效的对象持久化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转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 等都是很不错的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值