5.4.3 トランザクションの制御とEntityManager

トランザクションの制御方法によって,EntityManagerには次の2種類があります。

EntityManagerの種類とトランザクションの制御方法の関係について次の表に示します。

表5-6 EntityManagerの種類とトランザクションの制御方法の関係

EntityManagerの種類トランザクションの制御方法
JTAリソースローカル
コンテナ管理のEntityManager※1×
アプリケーション管理のEntityManager※2
(凡例)
JTA:JTAエンティティマネージャ
リソースローカル:リソースローカルエンティティマネージャ

注※1 トランザクションは必ずJTAによって制御されます。

注※2 トランザクションをJTAによって制御するか,またはアプリケーションが明示的にEntityTransactionというAPIを使用して制御するかを選択できます。EntityTransaction APIを使用する場合は,そのトランザクションはリソースローカルトランザクションとなります。JTAトランザクションが存在した場合でも,JTAトランザクションとは無関係に制御されます。


JTAエンティティマネージャを使用するかリソースローカルエンティティマネージャを使用するかは,永続化ユニットの定義で指定します。永続化ユニットでの定義方法については,「5.8.1(2) transaction-type属性」を参照してください。