2010-02-12 43 views
2

我正在开发一个客户端 - 服务器应用程序,Hibernate作为持久层和Jersey REST进行网络通信。Hibernate延迟加载+ Jersey REST =急切加载?

考虑到与角色的用户:

    时,我想显示在客户端的所有用户,我不希望由Hibernate加载的角色,我不希望他们送过来
  1. 网络
  2. 当我要修改用户的角色,我希望他们能够加载和我使用的是预加载模式(http://bwinterberg.blogspot.com/2009/09/hibernate-preload-pattern.html),以确定哪些属性应该由Hibernate加载转移

。这工作正常。

在情况1中,没有任何角色由Hibernate加载,就像预期的那样。但是,只要Jersey创建要发送给客户端的XML,它就会读取用户的角色,这又会让Hibernate加载角色(以及所有其他属性)。最后,Hibernate总是加载属于用户的完整数据集树。

我想在关闭会话之前关闭会话,然后再将用户传递给Jersey,所以Hibernate无法加载角色,但这似乎没有任何效果。

任何想法?

回答

3
  • 让你的实体的浅表副本和一个空的收集组给它,给它进行序列化

  • 使代理收集的自定义代理之前,只有在某些情况下,委托加载(第一个用例),并返回其他空集合

+0

谢谢!我会在星期一尝试。 – Olvagor 2010-02-12 16:20:43

+0

好吧,我试着做一个浅拷贝并设置一个空集合。这工作得很好。但是它也没有复制,因为幸运的是这个改变没有被提交给数据库。 现在我将我的空集合直接设置为数据库中的实体。 感谢您的提示! – Olvagor 2010-02-15 12:08:11