作者:xyzroundo
Hibernate赖加载指定的是在持久化上下文(session实例)中,依赖对象被用到的时候才对数据库查询该对象。
然而,但脱离了session实例(可能是序列化到客户端;可能是session实例关闭)时,赖加载的功能就失效了,当它要赖加载去数据库查询该对象,会发现session被关闭,无法查询!
那么,在这种情况下,我们如何来处理获取要用到的依赖对象这情况呢?方法有三:
1、在实体关联中,将映射关联的 lazy属性设置为 false(默认是为true的);
2、用HQL查询语句,将依赖对象join in 查询出来;
3、利用Hibernate.initialize();
在程序里面用强制加载的方法Hibernate.initialize(Object proxy) 方法强制加载依赖对象。这样就相当于动态改变为lazy=false。 但在使用时需要注意的一点是:其中的proxy是持久对象的关联对象属性,比如A实体,你要把A的关联实体B也检出,则要写 Hibernate.initialize(a.b)。