8.14.1 EntityManagerでのエンティティのライフサイクル管理
EntityManagerはデータベースに対して次の操作をするためのインタフェースを持つオブジェクトです。
-
エンティティを登録したり,削除したりする。
-
プライマリキーによってエンティティを検索する。
-
エンティティをわたったクエリを発行する。
EntityManagerに対してエンティティを登録すると,トランザクションのコミットなどの適切なタイミングでエンティティの状態がデータベースで永続化されます。
また,EntityManagerはエンティティの集合を表す永続化コンテキストと関連を持ちます。EntityManagerにエンティティが登録されると,エンティティは特定の永続化コンテキストに属します。また,EntityManagerは,エンティティのライフサイクルを管理します。
EntityManagerで管理するエンティティの集合は永続化ユニットという単位で定義します。永続化ユニットはアプリケーションの設定ファイルであるpersistence.xmlで定義します。
永続化コンテキストと永続化ユニットの注意事項について説明します。
-
永続化コンテキスト内ではエンティティは一意となるようにします。このため,同一の永続化コンテキスト内では,データベースの同じ行を表すエンティティは一つとしてください。なお,永続化コンテキストが異なる場合は,データベースの同じ行を表すエンティティを複数持つことができます。この場合のデータベース上での排他方法については,「8.10 楽観的ロック」または「8.11 JPQLでの悲観的ロック」を参照してください。
-
永続化ユニットはそれぞれ単一のデータベースにマッピングされます。定義の詳細については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「5.8.2(3) <jta-data-source>タグ,<non-jta-data-source>タグ」を参照してください。