我正在編寫集成測試,並且在一種測試方法中,我想將一些數據寫入數據庫然後讀取它。在春季設置休眠會話的刷新模式
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
@TransactionConfiguration()
@Transactional
public class SimpleIntegrationTest {
@Resource
private DummyDAO dummyDAO;
/**
* Tries to store {@link com.example.server.entity.DummyEntity}.
*/
@Test
public void testPersistTestEntity() {
int countBefore = dummyDAO.findAll().size();
DummyEntity dummyEntity = new DummyEntity();
dummyDAO.makePersistent(dummyEntity);
//HERE SHOULD COME SESSION.FLUSH()
int countAfter = dummyDAO.findAll().size();
assertEquals(countBefore + 1, countAfter);
}
}
正如你可以存儲和讀取數據之間看到,會議應被刷新,因爲默認FushMode
是AUTO
因此沒有數據可以實際存儲在數據庫中。
問題:我可以一些如何設置FlushMode
在會話工廠ALWAYS
或其他地方,以避免重複session.flush()
電話嗎?
DAO中的所有數據庫調用均使用HibernateTemplate
實例。
在此先感謝。
你可以讓Spring將'SessionFactory'注入到測試中,並在'setUp'中獲取當前的'Session'並調用'setFlushMode()'嗎? – 2010-10-28 23:59:48