2013-02-19 805 views
1

我有很多独立的功能,我必须做一个session.clear()transaction.commit()在他们每一种释放内存。Hibernate:是否可以在事务提交时自动执行sesssion?

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

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

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

回答

1

这就是所谓的的session-per-交易模式:当你开始交易,你创建一个会话,并关闭它后提交(注意,清洗会话,并提交事务几乎是关闭会话相同的效果,特别是如果你使用连接池)。

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

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

+0

在“*不*清除会话并提交...”中是否存在拼写错误。它假设是“*注意*清理会话.....”?我有点困惑。 – 2013-02-19 08:36:59

+0

是的,谢谢.... – axtavt 2013-02-20 08:30:36

相关问题