Hibernate种Lazy Initialization的问题

         在最近一个web项目中用hibernate作为ORM,要操作的两个表team和player正好是one-many的关系。我在业务层和持久层间加了一个DAO,PO就在这里获得,然后传到表示层。我获得一个team,然后在表示层通过team.getPlayers()来获得players,这个时候发生错误。大致意思是没有session或session已经关闭。后来查hibernate的文档,看来是我在集合那里设置了lazy=true,所以集合只有在读取的时候才载入,而session已经在DAO中关闭了。解决方法是不使用延迟初始化集合,或是把读取集合数据的语句提到Session被提交之前。但都没有充分利用Lazy Initialization这个特性,效率会不高。文档里介绍了在web应用中,可以用servlet过滤器在用户请求的完成之前来关闭Session,然后使用一个ThreadLocal变量来保存当前的Session。具体操作可以去forum.javaeye.com。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值