延迟加载时为什么不自动open session呢?

    用了hibernate都有差不多2年时间,一直都没有深入研究,最近学习起它的延迟加载。
    在网上找了很多资料,它们都是说,使用延迟加载时,被加载对象(也就是那个proxy)必须是同一个session打开的前提下,才能获取数据,否则,会抛出session is closed 或 disconnection session 异常。
    对此,我有个疑问,为什么hibernate在检测到与proxy相关联的session 是close或disconnection 时,不自动open,反而是抛异常。可能是为了事务的一致性考虑。
    了解这个问题的目的是要找出一种方法替代opensessioninview,我认为,延迟加载可以用于2个场景中,一个是从数据库取出数据,并传递到view层展现;另一个是在后台处理的时候。若是第一种场景的话,我觉得proxy取数据时,自己打开session并以只读方法加载数据,并不需要用opensessioninview的长连接。至于后一种在后台处理时,大可以把所需要的数据预先取出,而不需要使用延迟加载。
    希望各位发表一下意见。

你可能感兴趣的:(eclipse,设计模式,spring,Hibernate,webservice)