Я запускаю тест в подклассе AbstractTransactionalTestNGSpringContextTests
, где я выполняю тесты в частичном контексте Spring.Каждый тест выполняется в транзакции, которая в конце откатывается, чтобы оставить базу данных без изменений.
Один тест записывает данные в базу данных через Hibernate, а другой выполняет чтение из той же базы данных с использованием JdbcTemplate, причем оба совместно используюттот же источник данных.
Я обнаружил, что не вижу обновлений гибернации при запросах через JdbcTemplate.Это имеет некоторый смысл, поскольку каждое из них, по-видимому, получает свое собственное соединение из пула соединений и, следовательно, работает в рамках своей собственной транзакции.
Я видел признаки того, что эти двое могут совместно использовать соединение &транзакции, но не ясно, как лучше это настроить, особенно при участии фабрики соединений.Все эти компоненты объявлены как Spring bean.Кто-нибудь может дать мне какие-нибудь указатели?
Редактировать:
Ну, у меня возникли проблемы с чтением некоторой документации и класса HibernateTransactionManager утверждает, что это определенно возможно: «Этот диспетчер транзакций подходит для приложений, которые используют один Hibernate SessionFactory для доступа к транзакционным данным, но он также поддерживает прямой доступ к DataSource внутри транзакции (т. е. обычный код JDBC, работающий с тем же DataSource) ...».
Единственное требование, по-видимому, заключается в установке свойства источника данных, которое в противном случае не требуется.Сделав это, тем не менее, я до сих пор не вижу своих изменений, опубликованных до совершения транзакции.Я буду обновлять, если я получу это работает.