我正在使用Spring 3移植到Hibernate 4,這意味着我不能再使用Spring的HibernateTemplate。重構代碼很簡單(使用會話的sessionFactory.getCurrentSession()替換回調函數),但是我遇到了單元測試的問題。特別是,我想爲我的DAO完全實現集成測試 - 不需要@Transactional用法。在測試中從@HibernateTemplate移動到SessionFactory而沒有@Transactional
但是,因爲HibernateTemplate不再提供打開會話的方式(如果某個未打開的話),我會得到「沒有找到當前線程的會話」。當我運行我的測試時,因爲sessionFactory.getCurrentSession()不打開一個會話,如果沒有打開。
有沒有什麼辦法可以解決這個問題,以複製HibernateTemplate給我的東西,而不必在我的測試中使用@Transactional?它似乎應該是可能的,但我只能使用@Transactional註釋測試類時才能使測試工作(因爲它會打開一個會話)。
你有什麼不喜歡開始交易的原因嗎? –
它增加了額外的開銷,對於這些測試,是沒有必要的。我不覺得在這種特殊情況下開銷會增加任何價值,所以這就是爲什麼我需要解決問題的原因。 – AHungerArtist