在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制。而配置文件中Lazy属性是全局控制的,如何处理呢?
        在配置文件里面可以用lazy=true,在程序里面可以用强制加载的方法Hibernate.initialize(Object proxy) 方法强制加载这样就相当于动态改变为lazy=false。
        但在使用时需要注意的一点是:其中的proxy是持久对象的关联对象属性,比如A实体,你要把A的关联实体B也检出,则要写Hibernate.initialize(a.b)。

转载网址

例子:
// 强制加载
			Hibernate.initialize(user);
			Hibernate.initialize(user.getRole());
			Hibernate.initialize(user.getRole().getFunctions());
评论
angushj 2008-08-11   回复
执行上面代码的时候报了一个session已经关闭的错误~

有解决办法吗?
wilddonkey 2008-06-18   回复
我测试的发现即使改成 lazy="true"也会自动加载,反而 去掉这个设置用默认值(默认是true)就不会自动加载了。我用的是3.0,你测试一下有没有 这个问题
发表评论

您还没有登录,请登录后发表评论

kenbli
搜索本博客
我的相册
存档
最新评论