8.2.1 CJPAプロバイダでの処理
CJPAプロバイダでは,次の機能を提供しています。
-
エンティティオブジェクトとデータベースのマッピング
-
エンティティオブジェクトの管理
-
JPQLによるデータの操作
-
JDBCを通じてのデータベースへのアクセス
JPAを使用するには,ユーザが作成したアプリケーションでCJPAプロバイダが提供するインタフェースを操作します。CJPAプロバイダで実行する処理を次の図に示します。
図について説明します。
-
persistence.xmlに定義されている永続化ユニットの情報から,CJPAプロバイダはEntityManagerFactoryを生成します。
永続化ユニットとは,マッピング対象となるクラス,O/Rマッピングの情報,データソースなどを集めた論理的なグループです。永続化ユニットの詳細については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「5.4.4 永続化ユニットとは」を参照してください。
-
生成されたEntityManagerFactoryからEntityManagerを生成します。
-
ユーザアプリケーションから,EntityManager,クエリ,またはトランザクションを操作します。
-
EntityManager,クエリ,トランザクションから永続化コンテキストを通して,エンティティオブジェクトを操作します。
-
エンティティオブジェクトの変更をJDBCドライバを介してデータベースに反映します。
なお,EntityManagerには,次の2種類があります。
-
コンテナ管理EntityManager
J2EEコンテナによって管理されるEntityManagerです。
-
アプリケーション管理EntityManager
アプリケーションによって管理されるEntityManagerです。
EntityManagerの種類の詳細については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「5.5.1 EntityManagerと永続化コンテキスト」を参照してください。
また,トランザクションではトランザクションのコミットやロールバックなどを管理します。CJPAプロバイダでは,トランザクションとしてリソースローカルトランザクションを使用できます。JTAトランザクションと連携する場合,J2EEコンテナが提供する機能を使用します。