呼び出した場合、接続はJPAアプリケーションの接続プールにのみ返されますか?
entityManager.close();
?
エンティティマネージャーをサポートする接続は、そのライフサイクル中に変更できますか?
よろしくお願いしますmojoo
呼び出した場合、接続はJPAアプリケーションの接続プールにのみ返されますか?
entityManager.close();
?
エンティティマネージャーをサポートする接続は、そのライフサイクル中に変更できますか?
よろしくお願いしますmojoo
JPA仕様では、そのようなことや、接続を管理するための実装までは定義されていません。トランザクションがアクティブな場合、明らかな理由から、コミットするまで接続は同じであると考えるのが安全です。txnが終了すると、それは返されるか、実装に応じて保持される可能性があります(そしてあなたはあなたのことを言及しません)
これは、JPAの実装と構成によって異なります。
EclipseLinkでは、デフォルトでは、接続はアクティブな(ダーティな)トランザクションの間のみ保持されます。つまり、最初の変更またはロックから、コミットまたはロールバックまで。非トランザクションクエリの場合、接続はオンデマンドで取得され、クエリの実行後に返されます。これにより、接続プールを最大限に活用できます。したがって、通常、em.close()は何もしません。
これは、「eclipselink.jdbc.exclusive-connection.mode」永続性ユニットのプロパティを使用して構成できます。「Always」は、EntityManagerの存続期間中接続を保持します。
非トランザクション読み取りとは異なり、トランザクションに異なる接続プールを使用することもできます。これは、JTA以外のデータソースを読み取りに使用できるため、JTAで役立ちます。