【问题标题】:Hibernate: Is it possible to do a auto sesssion clear upon transaction commit?休眠:是否可以在事务提交时进行自动会话清除?
【发布时间】:2013-02-19 07:45:00
【问题描述】:

我有很多单独的函数,我必须在每个函数的 transaction.commit() 上执行 session.clear() 以释放内存。

我可能错了,但我认为,默认情况下,hibernate 中的 session.clear() 不会在 transaction.commit() 时调用。

我想知道是否有任何方法可以配置 hibernate 在每个 transaction.commit() 上执行自动会话清除,而无需执行 session.clear()?

对于上述问题的任何其他解决方案将不胜感激。

【问题讨论】:

    标签: java hibernate hibernate-session


    【解决方案1】:

    这叫做 session-per-transaction 模式:你在开始事务时创建一个会话,并在提交后关闭它(注意清理会话和提交事务与关闭几乎相同的效果一个会话,特别是如果您使用连接池)。

    如果你在独立环境中使用Hibernate,你需要配置contextual sessionshibernate.current_session_context_class = thread。在这种情况下,上下文会话(由getCurrentSession() 获得)将在事务提交时自动关闭。

    如果您使用 EJB 或 Spring Framework,则可以使用这些框架提供的事务管理工具。他们也支持这种模式。

    【讨论】:

    • not 中是否有错字,即清理会话并提交...”。是否应该是“note 清理会话.....”?我有点困惑。
    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2010-11-16
    • 2018-08-30
    • 2011-04-05
    • 2013-05-04
    相关资源
    最近更新 更多