Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)


5.5.1 EntityManagerと永続化コンテキスト

EntityManagerと永続化コンテキストの関係を次の図に示します。

図5‒4 EntityManagerと永続化コンテキストの関係

[図データ]

EntityManagerは,永続化コンテキストの中にmanaged状態のエンティティオブジェクトを入れて管理しています。アプリケーションがエンティティオブジェクトをpersistメソッドに渡したときや,managed状態のエンティティオブジェクトについてフィールドの値を更新すると,永続化コンテキスト内のエンティティオブジェクトの状態が変更されます。EntityManagerは,トランザクションがコミットされる直前に,永続化コンテキスト内のエンティティオブジェクトとデータベースのテーブルの状態を同期させます。永続化コンテキスト内のエンティティオブジェクトの状態をデータベースのテーブルに反映するために,このときにまとめて更新SQLを発行します。これによって,データベースのロックの期間を短くできるので,同時実行性を向上したり,効率良くデータを更新したりできます。

〈この項の構成〉

(1) EntityManagerの種類

永続化コンテキストとトランザクションの関係によって,コンテナ管理のEntityManagerとするか,アプリケーション管理のEntityManagerにするかを決めます。

(2) 永続化コンテキストの種類

永続化コンテキストは生存区間によって次の2種類があります。

コンテナ管理のEntityManagerの場合,永続化コンテキストの種類を選択できます。永続化コンテキストの種類は,@PersistenceContextのtype属性で指定します。デフォルトはトランザクションスコープの永続化コンテキストとなります。

なお,アプリケーション管理のEntityManagerの場合,常に拡張された永続化コンテキストとなります。永続化コンテキストの種類は選択できません。