データベースマッピング定義の設定方法
以下の2つの設定方法があります。
CMP Entity Beanは、配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合と、配備時にテーブル自動生成をする場合により設定方法が異なります。テーブル自動生成は開発時のみ使用してください。実業務運用環境では配備前にテーブルを生成し、そのテーブルにマッピングしてください。
Entity Beanをすでに存在するテーブルにマッピングするために必要な手順を以下に説明します。
JDBCリソースのJNDI名を指定
Interstage EJB application deployment descriptor (sun-ejb-jar.xml)の<enterprise-beans><cmp-resource>タグにJDBCリソースのJNDI名を指定します。
JDBCリソースのJNDI名の指定を省略すると、jdbc/__defaultのJDBCリソースが使用されます。「JDBCリソースのJNDI名の指定を省略する場合の注意」を参照してください。
テーブルのスキーマ情報を取得
EJBコンテナは配備時にデータベースにアクセスして、テーブルのスキーマ情報を自動的に取得できます。スキーマファイルを自動取得する場合は、Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルの<schema>タグの値を空にしてください。自動的に取得させない場合、capture-schemaコマンドを使用して取得したファイルを<schema>タグに指定してください。
マッピング情報をdeployment descriptorファイルに定義
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルに、Entity Beanの永続化フィールドと対応付けるDBカラム名や(自動的に取得させない場合には)スキーマ情報ファイル名を指定します。
アプリケーションの配備
1~3の設定を行ったCMP Entity Beanのアプリケーションを配備してください。
注意
テーブルのスキーマ情報を自動的に配備時に取得するために、JDBCドライバの環境設定をInterstage Java EE DASサービスにも行う必要があります。JDBCドライバの環境設定については、「5.14.1 JDBCドライバの環境設定」を参照してください。
テーブルのスキーマ情報を自動的に取得する場合、検証オプションを指定しないで配備してください。スキーマ情報を自動的に取得する場合、配備時に検証オプションを指定するとエラーメッセージが出力されて配備に失敗します。
テーブルのスキーマ情報を自動的に取得する場合でも<schema>タグを必ず記述してください。<schema>タグを省略するとエラーが発生し配備に失敗します。
アプリケーション開発時やサンプル動作のためにテーブルを自動的に生成する機能を使用できます。Interstage Java EE管理コンソールからは指定できません。テーブル自動生成機能を使用するために必要な手順を以下に説明します。
JDBCリソースのJNDI名を指定
「配備前にユーザがテーブルを作成し、そのテーブルにマッピングする場合」と同様です。
「JDBCリソースのJNDI名の指定を省略する場合の注意」を参照してください。
アプリケーションの配備
asadminコマンドのdeployサブコマンドのテーブル生成オプション(--createtablesまたは--dropandcreatetables)にtrueを指定すると、定義したJDBCリソースのデータベース種別をEJBコンテナが配備時に確認し、そのデータベース用のテーブル生成SQL文が発行されます。
テーブル生成オプション(--createtablesまたは--dropandcreatetables)のデフォルトはfalseです。
また、配備解除時にundeployサブコマンドのテーブル削除オプション(--droptables)にtrueを指定すると配備解除時にテーブルを削除します。undeployサブコマンドのテーブル削除オプション(--droptables)のデフォルトはfalseです。
注意
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルをejb-jarファイルに含めてdeployサブコマンドにテーブル生成オプション(--createtablesまたは--dropandcreatetables)を指定すると警告が発生し、テーブル生成は行わず、配備は行います。生成オプション(--createtablesまたは--dropandcreatetables)を指定する場合はInterstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルをejb-jarファイルに含まないでください。
テーブル名とカラム名はdeployment descriptor(ejb-jar.xml)ファイルに定義された以下の名前となります。生成されるテーブル名やカラム名が他のテーブルと重複する場合、または使用するデータベースの仕様により使用できない場合、<ejb-name>タグの値を変更するか、別のテーブルにマッピングしてください。
テーブル名 | Enterprise Bean名(<ejb-name>タグの値) |
カラム名 | 永続化フィールド名(<cmp-field><field-name>の値) |
自動生成するテーブルと同名のテーブルがすでに存在すると、警告が発生し、テーブル生成は行わず、配備は行います。
テーブル自動生成機能を使用する前に、JDBCドライバの環境設定をInterstage Java EE DASサービスにも行う必要があります。JDBCドライバの環境設定については、「5.14.1 JDBCドライバの環境設定」を参照してください。
Interstage EJB application deployment descriptor (sun-ejb-jar.xml)ファイルにJDBCリソース定義を省略し、配備時に検証オプションを指定すると、エラーメッセージが出力されて配備に失敗します。この場合、検証オプションを指定しないで配備してください。
JDBCリソースのJNDI名の指定を省略する場合の注意
Interstage CMP Mappings deployment descriptor (sun-cmp-mappings.xml)ファイルをejb-jarファイルに含めず、Interstage EJB application deployment descriptor (sun-ejb-jar.xml)ファイルのJDBCリソースのJNDI名の指定を省略するとjdbc/__defaultのJDBCリソースが使用され、配備時にデータベース用のテーブル生成SQL文が発行されます。
jdbc/__defaultの初期設定ではJava DBに接続されています。JDBCリソースのJNDI名の指定を省略した場合のみ、テーブル生成オプション(--dropandcreatetables)がデフォルトでtrueとなります。また、配備解除時はテーブル削除オプション(--droptables)がデフォルトでtrueとなります。このときのみ、Interstage Java EE管理コンソールからの配備でもテーブルの自動生成・自動削除が行われます。テーブル自動生成・テーブル自動削除を行わない場合はテーブル生成オプション・テーブル削除オプションにfalseを指定してください。
参照
JDBC接続プール、JDBCリソースの定義方法については、「5.14 データベースの環境設定」を参照してください。
Interstage deployment descriptorファイルの定義詳細については、「4.2.3 Interstage deployment descriptor」を参照してください。
capture-schemaコマンドについては、「Java EE運用コマンド」の「11.3 capture-schema」を参照してください。