Hibernate:是否可以在事务提交时清除自动会话?

时间:2013-02-19 07:45:01

标签: java hibernate hibernate-session

我有很多单独的函数,我必须在每个事务中的transaction.commit()上使用session.clear()来释放内存。

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

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

对于上述问题的任何其他解决方案都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

它被称为每个事务的会话模式:您在开始事务时创建会话,并在提交后关闭它(请注意,清理会话和提交事务几乎是与关闭会话的效果相同,尤其是在使用连接池时。)

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

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