Совместное использование транзакции Spring между hibernate & JdbcTemplate внутри AbstractTransactionalTestNGSpringContextTests - PullRequest
3 голосов
/ 14 сентября 2010

Я запускаю тест в подклассе AbstractTransactionalTestNGSpringContextTests, где я выполняю тесты в частичном контексте Spring.Каждый тест выполняется в транзакции, которая в конце откатывается, чтобы оставить базу данных без изменений.

Один тест записывает данные в базу данных через Hibernate, а другой выполняет чтение из той же базы данных с использованием JdbcTemplate, причем оба совместно используюттот же источник данных.

Я обнаружил, что не вижу обновлений гибернации при запросах через JdbcTemplate.Это имеет некоторый смысл, поскольку каждое из них, по-видимому, получает свое собственное соединение из пула соединений и, следовательно, работает в рамках своей собственной транзакции.

Я видел признаки того, что эти двое могут совместно использовать соединение &транзакции, но не ясно, как лучше это настроить, особенно при участии фабрики соединений.Все эти компоненты объявлены как Spring bean.Кто-нибудь может дать мне какие-нибудь указатели?

Редактировать:

Ну, у меня возникли проблемы с чтением некоторой документации и класса HibernateTransactionManager утверждает, что это определенно возможно: «Этот диспетчер транзакций подходит для приложений, которые используют один Hibernate SessionFactory для доступа к транзакционным данным, но он также поддерживает прямой доступ к DataSource внутри транзакции (т. е. обычный код JDBC, работающий с тем же DataSource) ...».

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

1 Ответ

0 голосов
/ 14 сентября 2010

Бин Spring, который пишет, должен сбрасывать свои изменения, чтобы бин, который читает, видел их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...