Есть ли что-то похожее на аннотацию Springs @Transactional, доступную в Java EE 6? - PullRequest
6 голосов
/ 21 июня 2011

В моей компании использование среды Spring не рекомендуется, а вместо этого продвигается Java EE 6. Но недавно я прочитал аннотацию Springs @Transactional на Использование @ Transactional и думаю, что это может быть очень полезно для нашего кода.

Насколько я понимаю, метод, отмеченный @Transactional, будет либо повторно использовать уже существующую транзакцию, либо открыть новую транзакцию, если при вызове этого метода не будет активной транзакции. Есть ли что-нибудь аналогичное (например, аналогичная аннотация), доступное в Java EE 6?

Ответы [ 4 ]

9 голосов
/ 21 июня 2011

EJB-компоненты имеют этот транзакционный контроль в Java EE. Вы можете установить для транзакции метода в EJB значение Required, RequNues, New, Supports и т. Д. Вы почти всегда используете Session Bean без сохранения состояния (@Stateless) для описываемых вами требований:

> @TransactionAttribute(value=[MANDATORY,
> REQUIRED, REQUIRES_NEW, SUPPORTS,
> NOT_SUPPORTED, NEVER]

Требуется, по умолчанию, будет повторно использовать существующий txn, если он запущен, или создаст новый, если его нет. Java EE 6 поставляется с EJB 3.1, поэтому вам даже не нужен бизнес-интерфейс, и вы можете упаковать EJB-файлы в WAR-файл, если хотите. Поэтому вы используете EJB-компоненты, но разработчику их гораздо проще интегрировать, если вам нужна только поддержка JTA.

Это полезная шпаргалка для аннотаций EJB, и есть множество руководств, если вы ищете их для Google.

5 голосов
/ 25 октября 2014

Java EE 7 теперь содержит @javax.transactional.Transactional.Он действует так же, как аннотация весны.

3 голосов
/ 21 июня 2011

В Java EE 6 можно аннотировать сам класс EJB-компонента или отдельные бизнес-методы в EJB (как сессионные EJB, так и MDB) с помощью аннотации TransactionAttribute .Это может быть применено, только если вы используете транзакции, управляемые контейнером.

Допустимые значения для аннотации определены в аннотации TransactionAttributeType :

  • NOT_SUPPORTED
  • ПОДДЕРЖКА
  • ТРЕБУЕТСЯ
  • REQUIRES_NEW
  • ОБЯЗАТЕЛЬНО
  • НИКОГДА

Семантика этих значений не изменилась сболее ранние версии спецификации EJB.Эти аннотации доступны начиная с Java EE 5, когда аннотации были введены в EJB 3.0.Обратите внимание, что некоторые значения не применимы в определенных сценариях - например, MDB не могут быть помечены ничем, кроме REQUIRED и NOT_SUPPORTED;любые другие значения не будут иметь смысла для управляемых контейнером транзакций для MDB (в конце концов, контейнер должен либо создать транзакцию, либо не создавать в этом случае).

Если вы хотите получить краткий обзор того, какАтрибуты транзакций сравниваются между EJB 3.0 и Spring-моделями. Я бы с удовольствием указал вам в направлении Java Transaction Design Strategies .Отказ от ответственности: я просто довольный читатель этой книги.

0 голосов
/ 21 июня 2011

EJB (без сохранения состояния и с сохранением состояния) являются транзакционными компонентами по умолчанию, ТРЕБУЕТСЯ свойство транзакции по умолчанию, аналогично пружине.

...