EJB 3.0(Public Draft)入門記 Java Persistence API Chapter5 その3

トランザクション制御についてです。

5.3 Controlling Transactions

EntityManagerの操作を含むトランザクションには2種類あります。

リソースローカルトランザクションの制御にはEntityTranaction APIを使います。

5.3.1 JTA EntityManagers

JTAを通してトランザクションが制御されるEntityManagerはJTA EntityManagerというらしいです。コンテナ管理のEntityManagerは必ずJTA EntityManagerだそうです。

5.3.2 Resource-loacal EntityManagers

EntityTranaction APIを通してアプリケーションによってトランザクションが制御されるEntityManagerはresource-loacal EntityManagerというらしいです。アプリケーション管理のEntityManagerはJTA EntityManagerもしくはresource-loacal EntityManagerのどちらかだそうです。resource-loacal EntityManagerはアクティブまたは非アクティブなJTAトランザクションの存在を関知しないようです。

5.3.2.1 The EntityTransaction Interface
EntityTransactionのインタフェースです。

public interface EntityTransaction {
  public void begin();
  public void commit();
  public void rollback();
  public boolean isActive();
}

EntityTransactionのインスタンスはEntityManager.getTranasactionで取得できます。


以上で5.3 Controlling Transactions終了です。結構省略したとこありますけど。なぜ省略したかというと、トランザクション制御には必ずJTAトランザクションを使うべき!だからです。リソースローカルトランザクションはその存在さえ知っておけばいいのかなと思います。