Какой менеджер транзакций использовать? (JPA, Spring)
Я разрабатываю веб-приложение на основе JPA + Hibernate, Spring и Wicket. Мне было интересно, как лучше всего реализовать транзакции в моем коде? Какой менеджер транзакций я должен использовать? Должно ли оно org.springframework.orm.jpa.JpaTransactionManager
, или org.springframework.jdbc.datasource.DataSourceTransactionManager
или что-то еще? Я бы хотел использовать Spring для управления моими транзакциями.
Ответы
Ответ 1
nanda правильно, вы можете использовать только JpaTransactionManager. Абстракция Transaction Manager, о которой мы говорим, относится к Spring PlatformTransactionManager и JPATransactionManager является единственной реализацией этого интерфейс, который понимает JPA.
Вы должны прочитать главу Управление транзакциями из ссылки Spring на лучше понять эту тему.
Ответ 2
org.springframework.orm.jpa.JpaTransactionManager
Мое предпочтение заключается в использовании этого с аннотацией:
<tx:annotation-driven transaction-manager="myTxManager" />
Ответ 3
Интерфейс org.springframework.transaction.PlatformTransactionManager - это ключевая абстракция в API Spring, предоставляющая основные методы управления транзакциями во время выполнения: начало, фиксация и откат.
интерфейс PlatformTransactionManager, его реализации
- JtaTransactionManager ----- > JTA
- DataSourceTransactionManager ----- > JDBC
- JpaTransactionManager ------ > JPA
- HibernateTransactionManager ------ > Hibernate
он откидывается на ваше требование, которое moudle Spring использует