【问题标题】:Hibernate Session Application ManagementHibernate 会话应用程序管理
【发布时间】:2014-05-05 15:08:35
【问题描述】:

我在一个 Web java 项目中使用 Hibernate (4.3.5),在以下情况下你的最佳实践是什么:

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

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

更多信息:我的休眠会话范围是线程,我在 HttpFilter 中初始化它及其事务。

【问题讨论】:

    标签: hibernate session


    【解决方案1】:

    是的,将其附加到休眠会话并调用其上的方法以加载惰性属性。

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

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

    【讨论】:

    • 它们已被弃用。我不应该使用其他策略吗?
    • 您使用的是哪个版本的 Hibernate?
    • 4.3(最新版本)。我找到了一种不同的方法来做锁,新方法也是一样的...... sessao.buildLockRequest(LockOptions.NONE).lock(usuarioLogado);这成功地重新附加了会话中的对象,没有问题谢谢
    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 2011-09-19
    • 1970-01-01
    • 2013-01-10
    • 2013-03-26
    • 2016-01-19
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多