Hibernate 性能优化_1

大概如此:不一定说在每个项目中都合适

 

1、 使用session.clear(),虽然说java有垃圾回收机制,但在实际应用中,还是存在着很多内存溢出

比如,开了N多文件而没关,比如开了地址池而没清,比如分页读了N多页而没有清内存

 

2、 1+N问题

对于ManyToOne,如果设为FetchType=Eager,则会产生1+N的问题(当然,OneToMany一般都是Lazy)

1+N问题为:如果我取10条记录,那么Hibernate就会再去找这10条记录对应的"One"的对象

 

解决办法,3种:

a)   在ManyToOne处设为Lazy后,暂时不发,啥时要用啥时就发SQL去找这个One对象

b)   在One的对象上,设 @BatchSize(size=5),这样,查10条记录时,虽然Hibernate会再去查这10条记录

      对应的"One",但会分10/5=2次去取,就是说,一次取5条记录,共发2条SQL

c)   改HQL, 原来的" FROM 对象 " 改为 " FROM A a LEFT JOIN fetch a.b c  " 这里c为a.b的别名

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值