Как установить изоляцию транзакции в EJB? - PullRequest
4 голосов
/ 15 апреля 2010

Я не могу найти способ установить TransactionIsolation в ejb. Кто-нибудь может сказать мне, как мне установить его? Я использую настойчивость.

Я посмотрел следующие классы: EntityManager, EntityManagerFactory, UserTransaction. Кажется, ни у одного из них нет такого метода, как setTransactionIsolation или тому подобное. Нужно ли менять файл persistence.xml?

Я только что прочитал книгу под названием Mastering EJB 3.0, 4-е издание. Они дали полную теорию на 10 страниц об уровне Изоляции, что эти проблемы возникают и что происходит, и тому подобное, но в конце они дали этот абзац: -

"As we now know, the EJB standard does not deal with isolation levels directly,
and rightly so. EJB is a component specification. It defines the behavior and
contracts of a business component with clients and middleware infrastructure
(containers) such that the component can be rendered as various middleware
services properly. EJBs therefore are transactional components that interact
with resource managers, such as the JDBC resource manager or JMS resource
manager, via JTS, as part of a transaction. They are not, hence, resource
components in themselves. Since isolation levels are very specific to the
behavior and capabilities of the underlying resources, they should therefore be
specified at the resource API levels. "

Что именно это значит? Что подразумевается под API уровня ресурсов? Пожалуйста, помогите мне. Если у упорства нет способа установить уровень изоляции, то почему они дают такую ​​огромную теорию в книге EJB и делают ее тяжелой по весу без необходимости: (

Ответы [ 2 ]

5 голосов
/ 15 апреля 2010

Как сказано в спецификации EJB

Транзакции не только делают завершение единицы работы атомарным, , но они также изолируют единицы работы друг от друга , при условии, что система допускает одновременное выполнение нескольких единиц работы.

  • API для управления уровнем изоляции зависит от менеджера ресурсов . (Следовательно, архитектура EJB не определяет API для управления уровнями изоляции .)
  • Поставщик бобов должен соблюдать осторожность при настройке уровня изоляции. Большинство менеджеров ресурсов требует, чтобы все обращения к менеджеру ресурсов в транзакции выполнялись с одинаковым уровнем изоляции .
  • Для сессионных компонентов и управляемых сообщениями компонентов с разграничением транзакций, управляемых компонентом , поставщик компонентов может программно определять желаемый уровень изоляции в методах корпоративного компонента, , используя специфичный для менеджера ресурсов API. . Например, java.sql.Connection.setTransactionIsolation
  • Поставщик контейнера должен обеспечить предоставление подходящих уровней изоляции, чтобы гарантировать согласованность данных для объектов EJB
  • Необходимо соблюдать особую осторожность, если несколько корпоративных компонентов получают доступ к одному и тому же диспетчеру ресурсов в одной транзакции. Необходимо избегать конфликтов в запрошенных уровнях изоляции.

Я надеюсь, что он может удовлетворить ваши потребности

0 голосов
/ 15 апреля 2010

См. это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...