Я пишу интеграционные тесты и в одном методе тестирования хотел бы написать некоторые данные в БД, а затем прочитать их.Установить режим скрытой сессии сеанса Hibernate весной
@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()' на нем? –