2014-05-05 40 views
0

我在Web Java项目使用Hibernate(4.3.5),你是什么样的最佳做法,在以下情况:Hibernate的Session应用管理

我在应用程序会话对象,登录的用户,并且这个用户里面有一些懒惰的对象。当我尝试在另一个Hibernate会话(currentSession)中使用此用户惰性属性时,我得到一个LazyInitializationException。

我应该将该用户重新连接到我的过滤器中的CurrentSession(因此我总是可以使用它的任何懒惰属性),更改我的用户对象加载策略以获取所有属性(只需在此选择中将对象放入应用程序会议),还是什么?

更多信息:我的hibernate会话范围是线程,并且我在HttpFilter中初始化它和它的事务。

回答

0

是的,将它附加到hibernate会话并调用它的方法来加载懒惰属性。

session.lock() if the transient object is not changed. 
session.update() if the transient object is changed 

这些上述方法会将瞬态对象附加到会话中。

+0

它们已被弃用。我不应该使用其他战略吗? – lucassig

+0

您使用的是哪个版本的Hibernate? – Zeus

+0

4.3(最新版本)。我发现了一个不同的方式来做锁,同样的事情与新的方法... sessao.buildLockRequest(LockOptions.NONE).lock(usuarioLogado); 成功地重新连接了会话中的对象而没有问题 谢谢 – lucassig