Show Table of Contents
30.4.2. CMP フィールドのカラムマッピング
CMP フィールドの関係マッピング設定は
jbosscmp-jdbc.xml
ファイルで行います。この構成は配下に cmp-field
要素と追加設定詳細を持つエンティティ element
がある ejb-jar.xml
に似ています。
以下に gangster bean の基本的なカラム名とデータタイプマッピングを示します。
<jbosscmp-jdbc> <enterprise-beans> <entity> <ejb-name>GangsterEJB</ejb-name> <table-name>gangster</table-name> <cmp-field> <field-name>gangsterId</field-name> <column-name>id</column-name> </cmp-field> <cmp-field> <field-name>name</field-name> <column-name>name</column-name> <not-null/> </cmp-field> <cmp-field> <field-name>nickName</field-name> <column-name>nick_name</column-name> <jdbc-type>VARCHAR</jdbc-type> <sql-type>VARCHAR(64)</sql-type> </cmp-field> <cmp-field> <field-name>badness</field-name> <column-name>badness</column-name> </cmp-field> </entity> </enterprise-beans> </jbosscmp-jdbc>
jbosscmp-jdbc.xml
の cmp-field
要素の完全コンテンツモデルを以下に示します。

図30.4 JBoss エンティティ要素のコンテンツモデル
各要素の詳細は次の通りになります。
- field-name: この必須の要素は設定中の
cmp-field
名です。ejb-jar.xml
ファイル内でこのエンティティ用に宣言されるcmp-field
のfield-name
要素と一致しなければなりません。 - read-only: これは対象となるフィールドが読み取り専用であることを宣言するものです。このフィールドは JBoss ではデータベースに書き込まれません。読み取り専用フィールドについては 「Read-only フィールド」で説明します。
- read-only-timeout: read-only フィールドの値が有効と判断した期間をミリ秒単位で表します。
- column-name: この任意の要素は
cmp-field
のマッピング先となるカラム名です。field-name
値を使用するのがデフォルトです。 - not-null: この任意の要素は、このエンティティ用の表の自動作成時に JBoss が NOT NULL をカラム宣言の末尾に追加すべきことを示します。プライマリキーフィールド とプリミティブ用のデフォルト は not null です。
- jdbc-type: JDBC で準備されたステートメント内にパラメーターを設定するか、JDBC 結果セットからデータをロードする場合に使用される JDBC タイプです。有効なタイプは
java.sql.Types
で定義されます。sql-type
が指定された場合にのみ必要です。デフォルトの JDBC タイプはdatasourcemapping
内のデータベースタイプに基づきます。 - sql-type: このフィールドの create テーブルステートメントで使用される SQL タイプです。有効な SQL タイプはデータベースベンダーによって異なります。
jdbc-type
が指定された場合にのみ必要です。デフォルトの SQL タイプはdatasourcemapping
内のデータベースタイプによって決定されます。 - property: この任意の要素により dependent value class CMP フィールドのプロパティが永続ストアにどのようにマッピングされるか定義することができるようになります。これについては 「依存値クラス(DVC: Dependent Value Class)」で詳しく説明します。
- auto-increment: この任意のフィールドがあると、データベース層ごとに自動的に増分されることを示します。これはフィールドを生成されたカラムやかい部で操作されたカラムにマッピングするために使用します。
- dbindex: この任意のフィールドがあると、サーバーはデータベース内の該当するカラムにインデックスを作成することを示します。このインデックス名は fieldname_index になります。
- check-dirty-after-get: この値はプリミティブタイプとそのベーシック java.lang 不変ラッパー(
Integer
、String
など)に false をデフォルト設定します。不変となる可能性があるオブジェクトに対しては、 JBoss は get オペレーションのあとダーティの可能性ありとしてそのフィールドをマークします。オブジェクトでのダーティチェックにおける金額的な負担が大きすぎる場合は、check-dirty-after-get
を false に設定して最適化することができます。 - state-factory: このフィールドにダーティチェックを行うことができる状態ファクトリオブジェクトのクラス名を指定します。状態ファクトリクラスは
CMPFieldStateFactory
インターフェースを実装する必要があります。