Что делает флажок «Использовать API транзакций Java» в Netbeans persistence.xml - PullRequest
1 голос
/ 27 ноября 2011

В Netbeans в файле persistence.xml есть флажок «Использовать API транзакций Java», который изменяет XML с:

<persistence-unit name="PUNAME-PU" transaction-type="RESOURCE_LOCAL"> 

На:

<persistence-unit name="PUNAME-PU" transaction-type="JTA">

Это дляCMT против BMT?

1 Ответ

2 голосов
/ 27 ноября 2011

Вот что спецификация JPA2 говорит об этом атрибуте:

Атрибут типа транзакции используется, чтобы указать, должны ли менеджеры сущностей, предоставляемые фабрикой менеджеров сущностей для модуля персистентности, быть менеджерами сущностей JTAили локально-ресурсные менеджеры.Значением этого элемента является JTA или RESOURCE_LOCAL.Тип транзакции JTA предполагает, что будет предоставлен источник данных JTA - либо как определено элементом jta-data-source, либо предоставлено контейнером.Как правило, в средах Java EE тип транзакции RESOURCE_LOCAL предполагает, что будет предоставлен источник данных, отличный от JTA.В среде Java EE, если этот элемент не указан, по умолчанию используется JTA.В среде Java SE, если этот элемент не указан, по умолчанию используется RESOURCE_LOCAL.

И вот что говорится о JTA и ресурсных менеджерах локальных сущностей:

JTA EntityManager

Менеджер сущностей, чьи транзакции контролируются через JTA, является менеджером сущностей JTA.Менеджер сущностей JTA участвует в текущей транзакции JTA, которая начата и зафиксирована вне менеджера сущностей и передана в базовый менеджер ресурсов.

Локальный ресурс EntityManagers

Менеджер сущностей, чьи транзакцииконтролируются приложением через EntityTransaction API, являющийся ресурс-локальным менеджером сущностей.Локальная транзакция менеджера сущностей ресурса сопоставляется с транзакцией ресурса через ресурс провайдером постоянства.Администраторы локальных ресурсов могут использовать серверные или локальные ресурсы для подключения к базе данных и не знают о наличии транзакций JTA, которые могут быть или не быть активными.

...