Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
EntityManagerと永続化コンテキストの関係を次の図に示します。
図5-4 EntityManagerと永続化コンテキストの関係
EntityManagerは,永続化コンテキストの中にmanaged状態のエンティティオブジェクトを入れて管理しています。アプリケーションがエンティティオブジェクトをpersistメソッドに渡したときや,managed状態のエンティティオブジェクトについてフィールドの値を更新すると,永続化コンテキスト内のエンティティオブジェクトの状態が変更されます。EntityManagerは,トランザクションがコミットされる直前に,永続化コンテキスト内のエンティティオブジェクトとデータベースのテーブルの状態を同期させます。永続化コンテキスト内のエンティティオブジェクトの状態をデータベースのテーブルに反映するために,このときにまとめて更新SQLを発行します。これによって,データベースのロックの期間を短くできるので,同時実行性を向上したり,効率良くデータの更新をしたりできます。
永続化コンテキストとトランザクションの関係によって,コンテナ管理のEntityManagerとするか,アプリケーション管理のEntityManagerにするかを決めます。
永続化コンテキストは生存区間によって次の2種類があります。
コンテナ管理のEntityManagerの場合,永続化コンテキストの種類を選択できます。永続化コンテキストの種類は,@PersistenceContextのtype属性で指定します。デフォルトはトランザクションスコープの永続化コンテキストとなります。
なお,アプリケーション管理のEntityManagerの場合,常に拡張された永続化コンテキストとなります。永続化コンテキストの種類は選択できません。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.