私の知る限り、エンティティマネージャーには2つのタイプがあります。1. コンテナ管理のエンティティ マネージャ 2. アプリケーション管理のエンティティ マネージャ
- コンテナ管理のエンティティ マネージャ
- このタイプの 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 の外部で使用できますか?
- アプリケーション管理エンティティ マネージャー
- JTAトランザクションを利用する
- JDBCトランザクション(リソースローカルトランザクション)を活用
JDBCトランザクションタイプのソースコードの例を誰か提供してください。