Spring / Hibernate / TestNG - ручная сессия и настройка транзакций - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь создать тестовый сценарий для моих классов DAO, которые используют простой Hibernate API (без таких Spring-компонентов, как HibernateTemplate, HibernateDaoSupport), вот так:

sessionFactory.getCurrentSession().save(obj);

У меня есть соответствующее определение sessionFactory и TransactionsManagerв контексте Spring, как показано в документе Spring.

Мне нужно открыть транзакцию в моем коде запуска и выполнить откат в конце.

Так что это отличается от стандартного модуля Springтестирование поддерживающей концепции транзакции для каждого вызова тестового метода, поэтому я не смог расширить AbstractTransactionalTestNGSpringContextTests.

Мне нужен способ запустить транзакцию и каким-то образом передать ее в фабрику сеансов.Я чувствую, что это должно быть чрезвычайно легко, но не может быть достигнуто после большого количества чтения и экспериментов.

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 28 июня 2011

Если вы не хотите использовать HibernateTemplate, вы можете использовать transactionManager напрямую, как описано в 10.6.2 Использование PlatformTransactionManager .

0 голосов
/ 28 июня 2011

@ Транзакционный (readOnly = false, распространение = Propagation.REQUIRED)

комментирует метод теста с использованием выше

0 голосов
/ 28 июня 2011
try {
  Session session = factory.openSession();
  Transaction tx = session.beginTransaction();
  ...
  tx.commit();
  session.close();
} catch (SomeException e) {
  tx.rollback();
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...