Я пишу интеграционные тесты, и в одном методе тестирования я хотел бы записать некоторые данные в БД и затем прочитать их.
@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
экземпляр.
Заранее спасибо.