读书人

Hibernate 性能优化_一

发布时间: 2012-12-18 12:43:41 作者: rapoo

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的别名

?

?

?

?

读书人网 >编程

热点推荐