EntityManagerのfindメソッドまたはgetReferenceメソッドの呼び出しによって,引数で指定した主キーに対応するエンティティをデータベースから取得できます。
EntityManagerのfindメソッドまたはgetReferenceメソッドで返されるエンティティは,トランザクションスコープの永続化コンテキストを利用します。このため,トランザクション内でメソッドを呼び出した場合はmanaged状態になります。また,トランザクション外でfindメソッドまたはgetReferenceメソッドを呼び出した場合はdetached状態になります。
find操作またはgetReference操作で取得したエンティティの状態を次の表に示します。
表6-10 find操作またはgetReference操作で取得したエンティティの状態
永続化コンテキスト | 取得したエンティティの状態 |
---|---|
トランザクションスコープの永続化コンテキスト(トランザクション外) | detached |
トランザクションスコープの永続化コンテキスト(トランザクション内) | managed |
拡張された永続化コンテキスト(トランザクション外) | managed |
拡張された永続化コンテキスト(トランザクション内) | managed |
なお,Cosminexus JPAプロバイダの場合,find操作またはgetReference操作では次の点がJPA仕様と異なります。なお,このほかにJPA仕様との機能差はありません。