Если вы работаете над проектом Spring Boot, нет, вам не нужно явно объявлять Beans SessionFactory
или PlatformTransactionManager
.Они будут автоматически настроены для вас.
Да, для выполнения транзакций достаточно добавить аннотацию Transactional
в ваш класс или метод.Автоматическую фиксацию даже следует отключить автоматически (в целях оптимизации), если это не сделано на уровне DataSource
.
Для «программной» части следует рассмотреть возможность остаться на стороне аннотации.Вы можете поиграть со стратегиями распространения транзакций , чтобы изолировать определенные операции.
Несколько важных замечаний об использовании декларативного подхода с аннотациями.
Не забывайте комментировать методы public
, если это возможно.Видимость любого другого метода не может управляться через прокси-серверы Java или прокси-серверы CGLIB, поэтому, даже если вы этого не заметите, эти методы не будут участвовать в контексте транзакции.Для методов protected
или private
вы вынуждены использовать AspectJ.
Помните также, что при использовании прокси самовывоз (и ожидание новой транзакции) не работает.
Чтобы использовать программный подход, вам просто нужно Autowire
TransactionTemplate
или PlatformTransactionManager
Bean.
PlatformTransactionManager
допускает дополнительную настройку транзакции, в то время как TransactionTemplate
это скорее служебный объект (который, однако, может быть смоделирован по мере необходимости).
Очевидно, не смешивайте оба подхода в одном и том же стеке вызовов методов.