Разница между JTA и Spring @транзакционные аннотации

Я начал использовать Spring's @Transactional аннотация, и это обеспечивает большое удобство для управления транзакциями. Однако использование этой аннотации в нашем коде теперь делает нас зависимыми от Spring. Я знаю, что с типом JPA есть пакета javax настойчивость пакет, где мы можем пометить код со всеми видами, если аннотации JPA, но так как все они исходят из javax.persistence, наш код не зависит от какой-либо конкретной реализации или ORM.

Я думаю, мой вопрос если есть какие-либо подобные аннотации для транзакционных материалов. Я нашел javax jta пакет, но я не уверен, что на самом деле есть общие аннотации, которые Spring может реализовать. В основном мне просто интересно, есть ли какие-либо общие аннотации javax, которые мы можем использовать для методов управления транзакционной функциональностью, чтобы мы не зависели от Spring.

1 ответов


Я не думаю, что JavaEE 6 предлагает аннотации демаркации транзакций, как это делает Весна. Ближайший аналог, я думаю, - это использование сеансовых бобов без гражданства EJB, которые являются транзакционными по своей природе, но не явно разграничены как таковые (кто-то, пожалуйста, поправьте меня, если я ошибаюсь).

это ваш вызов относительно того, какие API(ы) вы выбираете для сопряжения вашего кода. Преимущество использования весной @Transactional заключается в том, что вы не зависите от конкретного используемого API транзакций (@Transactional может работать с транзакциями JTA, JPA, Hibernate или raw JDBC без изменения кода). Но, конечно, ты привязан к весне.

Если стиль аннотации-это то, что вы хотите, то я не вижу альтернативы Spring, если вы не хотите полностью охватить JavaEE и использовать EJB 3.Х-стиль аннотации.