5.4.3 トランザクションの制御とEntityManager
トランザクションの制御方法によって,EntityManagerには次の2種類があります。
-
JTAエンティティマネージャ
トランザクションがJTAによって制御されるEntityManagerです。
-
リソースローカルエンティティマネージャ
トランザクションがEntityTransaction APIによって制御されるEntityManagerです。
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属性」を参照してください。