我正在编写集成测试,并且在一种测试方法中,我想将一些数据写入数据库然后读取它。在春季设置休眠会话的刷新模式
@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