0

私の知る限り、エンティティマネージャーには2つのタイプがあります。1. コンテナ管理のエンティティ マネージャ 2. アプリケーション管理のエンティティ マネージャ

  1. コンテナ管理のエンティティ マネージャ
    • このタイプの em は JTA トランザクションのみを使用します

以下は私のコードです:

@PersistenceContext(unitName = "", type = Transaction)
EntityManager em;


public void persist(T entity) {
em.persist(entity)
}

質問: コードを実行すると例外がスローされます: TransactionRequireException なぜこの種の例外があるのですか? メソッド persist() に @Resource UserTransaction を追加した後、TransactionRequireException は発生しません。UserTransaction は JTA に属しているのだろうか。

EntityTransaction et = em.getTransaction();

上記のコードを参照してください。JTA トランザクション タイプが getTransaction() を呼び出せないのはなぜですか?

拡張された JTA トランザクションは EJB の外部で使用できますか?

  1. アプリケーション管理エンティティ マネージャー
    • JTAトランザクションを利用する
    • JDBCトランザクション(リソースローカルトランザクション)を活用

JDBCトランザクションタイプのソースコードの例を誰か提供してください。

4

1 に答える 1