2013-02-19 806 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

相關問題