日期:2014-05-20  浏览次数:20697 次

Hibernate的Session什么时候关闭最好?
假设从A表中读出所有数据,在在Hibernate的映射文件中A中包含B
映射文件中默认lazy="true"未改变.这时候如果查询后把Session关闭.当查处的数据被调用的时候调用到A中包含的B对象的时候就会出错.
如果把lazy="false"或者不关闭Session就没问题.
我的做法是等到数据用不到的时候再将Session关闭.
但是有的人说Session不关闭会占用资源而lazy="false"如果是大数据量会降低查询速度.
请问有什么更好的办法么?
谢谢

------解决方案--------------------
session 还是用完了就关闭的好,否则容易产生很多问题。Hibernate的一对多查询是个很大的问题(其实任何ORM都有这个问题),我的解决方案是lazy=true,需要的时候再访问数据库获取“多”那一端所需要的数据。这样做会增加数据库访问次数,但优点是不浪费资源,减缓系统缓存压力,增加程序速度。毕竟数据库查询的速度比程序快得多,而且当你获得了“一”的时候想查询“多”,通常都是索引范围内的查询,搜索数据数量控制在百或者千以内,不影响运行。