Eclipseリンク:現在のトランザクション分離レベルの確認
-
26-09-2019 - |
質問
EclipseLink 2.0.1を使用するスタンドアロンJavaアプリケーションがあります。これは、persistence.xml によって構成され、次のような処理を行います。
final EntityManagerFactory emf = Persistence.createEntityManagerFactory("xy");
final EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
....
em.getTransaction().commit();
そのトランザクションに実際に適用されるデータベース トランザクション分離レベルを知りたいと考えています。「ダーティ デバッグのみ」のソリューションでも役に立ちます。
EclipseLinkのドキュメント 説明します, 、 それ
EclipseLink アプリケーションで特定のデータベース・トランザクション分離レベルを達成するには、単に DatabaseLogin メソッド setTransactionIsolation を使用するよりも複雑な作業が必要です。
したがって、希望する分離レベルが適用されていることを確認したいと思います。
解決
使用する Connection#getTransactionLevel()
根底にあるもの Connection
機能するはずです。JPA 2.0 でそれを取得する方法は次のとおりです。
final EntityManagerFactory emf = Persistence.createEntityManagerFactory("xy");
final EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
java.sql.Connection connection = em.unwrap(java.sql.Connection.class);
System.out.println(connection.getTransactionIsolation());
....
em.getTransaction().commit();
参照
- EntityManager からの JDBC 接続の取得 (JPA 1.0 と JPA 2.0 の両方をカバーします)
所属していません StackOverflow