Cosminexus V9 アプリケーションサーバ システム構築・運用ガイド
JPAを使用するサンプルプログラムは,次のディレクトリに格納されます。
<Application Serverのインストールディレクトリ>\CC\examples\jpa\employeeinfo
サンプルの概要と実行手順を説明します。
JPAのサンプルプログラムの構成を次に示します。このサンプルプログラムでは,従業員情報を取得してデータを更新します。なお,データベースのテーブルに対して,従業員情報の新規登録および削除は実行できません。また,[Update]ボタンをクリックしたあとで実施されるfindメソッドからflushメソッド間の処理中に,ほかからデータベースが変更されると楽観的ロックを検出します。
図M-32 JPAのサンプルプログラムの構成
Webブラウザを使用してサーブレットにアクセスし,実行結果をWebブラウザ上に表示します。このサンプルプログラムでは,サーブレットからStateless Session Beanを呼び出し,Beanの中でJPAを利用してデータベースを操作します。
JPAのサンプルプログラムの構成内容を次の表に示します。
表M-3 JPAのサンプルプログラムの構成内容
項目 | 内容 |
---|---|
Enterprise Bean種別 | Stateless Session Bean |
トランザクション | CMT |
Entity Manager | コンテナ管理 |
トランザクション種別 | JTA |
永続化コンテキスト | トランザクションスコープ |
サンプルプログラムのエンティティの構成を次に示します。
図M-33 エンティティの構成
図に示すように,サンプルプログラムでは,エンティティ間のリレーションに単方向のManyToOneを利用します。従業員エンティティクラスだけを具象化し,部門エンティティは従業員エンティティの内部の値として利用されます。どちらのエンティティにも,楽観的ロック機能を実装します。
実行例を次に示します。
図M-34 JPAのサンプルプログラムの実行例
この画面での操作を次に示します。
なお,[ID]に値を入力しない状態で,[Find]ボタンまたは[Update]ボタンをクリックしても,何も処理されません。
サンプルプログラムの実行手順を示します。
「付録M.1(1) J2EEサーバのセットアップ」を参照してください。
「付録M.1(2) J2EEサーバのカスタマイズ」を参照してください。
「付録M.1(3) J2EEサーバの起動」を参照してください。
このサンプルプログラムはデータベースに接続するため,リソースアダプタの設定が必要です。Connector属性ファイルで,トランザクションサポートレベルに「NoTransaction」以外を設定してJTAトランザクションが利用できるようにしてください。設定方法については,「付録M.1(4) リソースアダプタの設定」を参照してください。
サンプルで提供するpersistence.xmlの次に示すタグを変更してください。
サンプルで提供するバッチファイル(compile.bat)を使用して,サンプルプログラムをコンパイルします。このバッチファイルで,EJB-JARファイル(employeeinfo.jar)とWARファイル(employeeinfo.war)とEARファイル(employeeinfo.ear)が作成されます。
サンプルで提供するバッチファイル(deployApp.bat)を使用して,アプリケーションをデプロイします。「付録M.1(5) アプリケーションのインポート,設定,および開始」を参照してください。
サンプルで提供するSQLファイル(createTable_Oracle.sql,createTable_HiRDB.sql)のSQLを実行してください。SQLを実行すると,JPA_SAMPLE_EMPLOYEEテーブル,およびJPA_SAMPLE_DEPARTMENTテーブルを削除,追加します。各テーブルの構成と登録データを次に示します。
列名 | 説明 |
---|---|
ID※1 | 従業員ID |
NAME | 従業員名 |
DEPARTMENT_ID※2 | 部門ID |
SALARY | 従業員給料 |
EMPLOYEE_VERSION | 楽観的ロック機能で使用するためのカラム |
注※1 PK(主キー)です。
注※2 FK(外部キー)です。
ID | NAME | DEPARTMENT_ID | SALARY | EMPLOYEE_VERSION |
---|---|---|---|---|
1 | George | 1 | 100000 | 1 |
2 | John | 1 | 200000 | 1 |
3 | Thomas | 1 | 300000 | 1 |
4 | James | 2 | 400000 | 1 |
5 | Andrew | 2 | 500000 | 1 |
列名 | 説明 |
---|---|
DEPARTMENT_ID※ | 部門ID |
DEPARTMENT_NAME | 部門名 |
DEPARTMENT_VERSION | 楽観的ロック機能で使用するためのカラム |
注※ PK(主キー)です。
DEPARTMENT_ID | DEPARTMENT_NAME | DEPARTMENT_VERSION |
---|---|---|
1 | Sales | 1 |
2 | Human resource | 1 |
ブラウザを起動し,URLに次の文字列を指定します。
http://<マシン名>:<ポート番号>/<ContextRoot>/EmployeeInfo.html
インプロセスHTTPサーバが使用できる場合,デフォルトでは,次のURLを指定します。
http://localhost/employee_information/EmployeeInfo.html
「付録M.1(6) アプリケーションの停止,削除」を参照してください。
「付録M.1(7) J2EEサーバの終了」を参照してください。
このサンプルプログラムでは,O/Rマッピングファイル(orm.xml)も提供しています。このサンプルプログラムは,アノテーションを使用するプログラムであるため,O/Rマッピングファイルは利用しません。サンプルで提供するバッチファイルを使用して,サンプルプログラムをコンパイルしてもO/RマッピングファイルはJARファイルに格納されません。
O/Rマッピングファイルを利用する場合には,次のことに注意してください。
%JAR% cvf jar/EmployeeInfo.jar -C DD META-INF/persistence.xml -C classes employeeinfo |
%JAR% cvf jar/EmployeeInfo.jar -C DD META-INF/persistence.xml -C DD META-INF/orm.xml -C classes employeeinfo |
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.