Какой менеджер транзакций использовать? (JPA, весна)

Я занимаюсь разработкой веб-приложения на основе JPA + Hibernate, Spring и Wicket. Мне было интересно, как лучше реализовать транзакции в моем коде? Какой менеджер транзакций мне следует использовать? Должно ли это бытьorg.springframework.orm.jpa.JpaTransactionManager, или жеorg.springframework.jdbc.datasource.DataSourceTransactionManager или что-то другое? Я бы хотел использовать Spring для управления своими транзакциями.

Ответы на вопрос(3)

Решение Вопроса

Нанда прав, выМожно используйте только JpaTransactionManager. Абстракция Transaction Manager, о которой мы здесь говорим, - это SpringPlatformTransactionManager интерфейс иJPATransactionManager это единственная реализация этого интерфейса, которая понимает JPA.

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

 yuqizhang29 мар. 2019 г., 03:04
@Sean Patrick Floyd На самом деле, я только что прочитал исходный кодJPATransactionManager, а такжеPlatformTransactionManagerОбнаружено, что существует некоторое приведение типов к параметрам метода. например.doCommit(DefaultTransactionStatus status)что означает, что они нарушают«Принцип обращения зависимостей»  чтобы получить «гибкость», но это может запутать пользователя.
 Erlan29 окт. 2015 г., 04:24
хмм. Теперь я вижу. Спасибо
 Erlan28 окт. 2015 г., 14:21
@SeanPatrickFloyd Если мы можем использовать JpaTransactionManager только тогда, почему в Spring существует так много других TransacitonManager и когда их следует использовать?
 Pascal Thivent07 окт. 2010 г., 13:12
+1 за вашу полноту и +1 за нанду тоже, чтобы быть справедливым :)
 Sean Patrick Floyd29 мар. 2019 г., 01:07
@yuqizhang проверитьСтраница Javadoc для PlatformTransactionManager и посмотрите на реализующие классы.
 Sean Patrick Floyd28 окт. 2015 г., 17:54
@Erlan существует одна реализация менеджера транзакций для каждого типа персистентности: jdbc, hibernate, jpa, jdo
 yuqizhang15 мар. 2019 г., 12:12
Почему разные типы персистентности (jdbc, hibernate, jpa ...) полагаются на один и тот же интерфейсPlatformTransactionManager, но может работать только с конкретной реализацией?
 John Manak07 окт. 2010 г., 12:45
хорошо, большое спасибо, ребята!
 Sean Patrick Floyd01 апр. 2019 г., 20:20
@yuqizhang, вероятно, правда, но я ничего не могу с этим поделать, я не работаю на них :-)

это ключевая абстракция в Spring API, предоставляющая основные методы для управления транзакциями во время выполнения: начало, принятие и откат.

PlatformTransactionManager интерфейс, его реализации

JtaTransactionManager ----->JTADataSourceTransactionManager ----->JDBCJpaTransactionManager ------>JPAHibernateTransactionManager ------>зимовать

это зависит от вашего требования, какое количество весны вы используете

org.springframework.orm.jpa.JpaTransactionManager

Я предпочитаю использовать это с аннотацией:

<tx:annotation-driven transaction-manager="myTxManager" />

Ваш ответ на вопрос