プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server Enterprise JavaBeansバージョン2.1の開発
12c (12.2.1.1.0)
E82895-01
目次へ移動
目次

前
次

C weblogic-cmp-jar.xmlデプロイメント記述子のリファレンス

この付録では、WebLogic固有のXMLスキーマベース(XSD)デプロイメント記述子ファイル、weblogic-cmp-jar.xmlのEJB 2.1の要素について説明します。これらの定義を使用して、EJBデプロイメントを構成するWebLogic固有のweblogic-cmp-jar.xmlファイルを作成します。このデプロイメント記述子ファイルを使用して、コンテナ管理による永続性(CMP)の動作を指定します。

注意:

EJB 3.x実装でメタデータ・アノテーションを使用している場合は、Oracle WebLogic Server Enterprise JavaBeansの開発のEJBメタデータ・アノテーション・リファレンスを参照してください。

WebLogic Serverのweblogic-cmp-jar.xmlファイルは、XMLスキーマ(XSD)に基づいています。9.0より前のリリースのWebLogic Serverでは、weblogic-cmp-jar.xmlは文書型定義(DTD)に基づいていました。後方互換性を保持するために、WebLogic ServerではXSDベースとDTDベースのEJB記述子が引き続きサポートされています。そのため、WebLogic ServerのDTDベースの記述子を使用するアプリケーションも記述子を変更せずにデプロイできます。

EJB 1.1デプロイメント記述子の要素については、「EJB 1.1ユーザーへの重要な情報」を参照してください。

この章の内容は次のとおりです。

詳細情報:

EJB 1.1デプロイメント記述子の要素については、「EJB 1.1ユーザーへの重要な情報」を参照してください。

2.1のweblogic-cmp-jar.xmlデプロイメント記述子ファイルの構造

weblogic-cmp-jar.xmlファイルは、WebLogic ServerのRDBMSベースの永続性サービスを使用するエンティティEJBのデプロイメント記述子を定義します。EJBコンテナでは、9.0より前のバージョンのWebLogic Serverで提供されていたXMLとは異なるバージョンのweblogic-cmp-jar.xmlを使用します。

旧バージョンのweblogic-cmp-jar.xml DTD Beanも引続きこのリリースのWebLogic Serverにデプロイできます。同様に、WebLogic Server 8.1でサポートされていたweblogic-cmp-jar.xml DTDも引続き使用できます。WebLogic Server 9.0から、デプロイメント記述子はXSDベースになりましたが、後方互換性を保持するためにWebLogic ServerはDTDベースの記述子も引続きサポートしています。ただし、CMP 2.1の機能を使用する場合は、下記のXSDを使用する必要があります。

このリリースのWebLogic Serverに対応させるため、DDConverterを実行して9.0より前のリリースのEJBデプロイメント記述子を変換することをお薦めします。DDConverterでは、9.0より前のリリースのWebLogic ServerのDTDベースのEJBデプロイメント記述子を、このリリースでサポートされているXSDベースの記述子に変換します。

注意:

アプリケーションを新しいWebLogic Serverリリースに移行するときには、必ず記述子を変換することをお薦めします。

WebLogic Serverのweblogic-cmp-jar.xmlの最上位要素は、weblogic-rdbms-jar要素で構成されます。

weblogic-rdbms-jar
    weblogic-rdbms-bean
    ejb-name
    data-source-jndi-name
    table-map
    field-group
    relationship-caching
    sql-shape
    weblogic-query
    delay-database-insert-until
    use-select-for-update
    lock-order
    instance-lock-order
    automatic-key-generation
    check-exists-on-method
    cluster-invalidation-disabled

weblogic-rdbms-relation
    relation-name
    table-name
     weblogic-relationship-role
order-database-operations
enable-batch-operations
create-default-dbms-tables
validate-db-schema-with
database-type
default-dbms-tables-ddl

compatibility
    serialize-byte-array-to-oracle-blob
    serialize-char-array-to-bytes
    allow-readonly-create-and-remove
    disable-string-trimming

2.1のweblogic-cmp-jar.xmlデプロイメント記述子の要素

以下のweblogic-cmp-jar.xml要素のリストには、このリリースのWebLogic Serverでサポートされているすべての要素が含まれています。

allow-readonly-create-and-remove

値の範囲: true | false

デフォルト値: false

親要素:

weblogic-rdbms-jar
  compatibility

機能

WebLogic Server 8.1 SP02で導入されたこの要素は、後方互換性のフラグです。ReadOnly同時実行性を使用するEJBで作成と削除を有効にするために使用します。

WebLogic Server 8.1 SP2より前は、それらの処理は許可されていました(ただしトランザクション的な意味はありませんでした)。ReadOnly Beanでより効率的なコードを生成できるように、また、それらを使用するのがプラクティスとして良くないという理由から、作成と削除は許可されなくなっています。

<compatibility> 
    <allow-readonly-create-and-remove>
        true
    </allow-readonly-create-and-remove>
</compatibility>

automatic-key-generation

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

automatic-key-generation要素は、主キーが自動的に生成される方法を指定します。この機能の詳細については、「主キーの自動生成」を参照してください

以下のサンプル・コードは、さまざまな主キー生成方法のautomatic-key-generation要素を示しています。サポートされている生成方法については、「generator-type」を参照してください

例C-1 generator-type=Oracleのautomatic-key-generation

<automatic-key-generation>
    <generator-type>Oracle</generator-type>
    <generator-name>test_sequence</generator-name>
    <key-cache-size>10</key-cache-size>
</automatic-key-generation>

例C-2 generator-type=SQL-SERVERのautomatic-key-generation

<automatic-key-generation>
    <generator-type>SQL-SERVER</generator-type>
</automatic-key-generation>

例C-3 generator-type=NamedSequenceTableのautomatic-key-generation

<automatic-key-generation>
    <generator-type>NamedSequenceTable</generator-type>
    <generator-name>MY_SEQUENCE_TABLE_NAME</generator-name>
    <key-cache-size>100</key-cache-size>
</automatic-key-generation>

caching-element

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    relationship-caching

機能

関連するBeanでcmr-fieldgroup-nameを指定します。group-nameを指定しなかった場合、デフォルトのgroup-name (全フィールドをロード)が使用されます。詳細については、「group-name」を参照してください

caching-elementでは、relationship-cachingの例のようにネストされたキャッシュ要素を格納できます

リレーションシップ・キャッシングについては、「リレーションシップ・キャッシング」を参照してください

「relationship-caching」を参照してください。

caching-name

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    relationship-caching

機能

caching-name要素は、リレーションシップ・キャッシュの名前を指定します。リレーションシップ・キャッシングについては、「リレーションシップ・キャッシング」を参照してください

「relationship-caching」を参照してください。

check-exists-on-method

値の範囲: True | False

デフォルト値: True

親要素:

weblogic-rdbms-bean

機能

デフォルトでは、EJBコンテナはコンテナ管理による永続性(CMP)エンティティBeanの有無を、Bean上で呼び出されたビジネス・メソッドが完了する前にチェックします。これは、削除されたコンテナ管理のエンティティBean上で何らかのビジネス・メソッドが呼び出されると、直ちにコンテナがアプリケーションに対して通知を行うことを意味します。

EJBコンテナが、存在するかどうかのチェックをする前にトランザクションの完了を待機するように指定するには、check-exists-on-methodFalseに設定します。これにより、大半のアプリケーションで高いパフォーマンスを実現しつつ、十分なレベルのチェックが提供されます。

次の例では、削除されたCMPエンティティBean上でビジネス・メソッドが呼び出されたことをWebLogic Serverがアプリケーションに通知するように指定しています。

<check-exists-on-method>True</check-exists-on-method>

cluster-invalidation-disabled

値の範囲: true | false

デフォルト値: false

親要素:

weblogic-rdbms-bean

機能

WebLogic Server 9.0で採用されたこのフラグは、OptimisticまたはReadOnly同時実行性を使用するEJBがデプロイ先のクラスタのメンバーによって更新されたときにそのEJBを無効化するかどうかを指定するために使用します。詳細については、「クラスタ内のオプティミスティック同時実行性の無効化オプション」を参照してください

<cluster-invalidation-disabled>true</cluster-invalidation-disabled>

cmp-field

値の範囲: Beanのフィールドの有効な名前。フィールドは、ejb-jar.xml内に対応するcmp-entryエントリを持つ必要があります。フィールド名は大文字と小文字が区別されます。

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  field-map

および

weblogic-rdbms-relation
  field-group

機能

この名前は、Beanインスタンスのマップされたフィールドを指定します。Beanインスタンスのフィールドには、データベースから取得した情報が指定されている必要があります。

「field-map」を参照してください。

cmr-field

値の範囲: Beanのフィールドの有効な名前。フィールドは、ejb-jar.xmlに対応するcmr-fieldエントリを持つ必要があります。

デフォルト値:なし

親要素:

weblogic-rdbms-relation
  field-group

および

relationship-caching
  caching-element

機能

コンテナ管理による関係フィールドの名前を指定します。

<cmr-field>stock options</cmr-field>

column-map

値の範囲:なし

デフォルト値:なし

親要素:

<weblogic-rdbms-relation>
  <weblogic-relationship-role>
    <relationship-role-map>

機能

この要素は、データベース内の表の外部キー列と対応する主キーのマッピングを表します。2つの列は同じ表にある場合も別の表にある場合もあります。列が属している表は、column-map要素がデプロイメント記述子に表示されるコンテキストに対しては暗黙的です。

column-map要素の例は以下のとおりです。

注意:

foreign-key-columnがリモートBeanを参照する場合は、key-column要素を指定する必要はありません。

<column-map>
    <foreign-key-column>account-id</foreign-key-column>
    <key-column>id</key-column>
</column-map>

compatibility

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar

機能

WebLogic Server 8.1 SP02で導入された<compatibility>要素では、記述子ファイルで記述されているすべてのcmp Beanの互換性フラグを指定する要素を設定します。

<compatibility> 
    <serialize-byte-array-to-oracle-blob>...</serialize-byte-array-to-oracle-blob>
    <serialize-char-array-to-bytes>...</serialize-char-array-to-bytes>
    <allow-readonly-create-and-remove>...</allow-readonly-create-and-remove>
    <disable-string-trimming>...</disable-string-trimming>
</compatibility>

create-default-dbms-table

値の範囲: Disabled | CreateOnly | DropAndCreate | DropAndCreateAlways | AlterOrCreate

デフォルト値: Disabled

親要素:

weblogic-rdbms-jar

機能

create-default-dbms-table要素は、以下の2つの機能を実行します。

  • 基底の表スキーマが変更されたときに、WebLogic Serverがデプロイメント・ファイルおよびBeanクラスの記述に基づいて自動的にデフォルト表を作成するかどうか、またはどのように作成するのかを決める

  • WebLogic ServerがOracleデータベースのSEQUENCEを自動的に作成するかどうか、またはどのように作成するのかを決める

この要素は、開発段階で役立つ場合にのみ使用します。使用するDBMS CREATE文の表スキーマがコンテナの最適な定義になります。プロダクション環境では通常、より正確なスキーマ定義が必要です。

自動表作成

次の表は、WebLogic Serverがcreate-default-dbms-tablesの値に基づいてどのように自動表作成を処理するのかを説明しています。


表C-1 自動表作成

<create-default-dbms-tables>の設定値 自動表作成に関連する動作

Disabled

EJBコンテナは自動表作成に関して何も行いません。これがデフォルト値です。

CreateOnly

EJBコンテナは、スキーマの変更を検出すると自動的に表を生成します。

コンテナは、デプロイメント・ファイルおよびBeanクラス内の情報に基づいて表を作成しようとします。表作成が失敗した場合は、「Table Not Found」エラーが送出され、ユーザーは手動で表を作成する必要があります。

DropAndCreate

EJBコンテナは、スキーマの変更を検出すると自動的に表を生成します。

コンテナは、列が変更されている場合はデプロイメント時に表を削除してから再作成します。コンテナはデータを保存しません。

列タイプとcmpフィールド・タイプの間に互換性があることを確認する必要があります。EJBコンテナは、列タイプとcmpフィールド・タイプの間に互換性があることを確認しません。

DropAndCreateAlways

EJBコンテナは、スキーマの変更を検出すると自動的に表を生成します。

コンテナは、列が変更されているかどうかに関係なくデプロイメント時に表を削除してから作成します。コンテナはデータを保存しません。

AlterOrCreate

EJBコンテナは、スキーマの変更を検出すると自動的に表を生成します。

コンテナは、まだ存在していない場合は表を作成します。表が存在する場合、コンテナは表スキーマを変更します。データは保存されます。

注意: 新しい列が主キーとして指定されているか、値がnullの列が新しい主キー列として指定されている場合には、この設定を選択しないでください。


TABLE CREATIONが失敗した場合、サーバーはTable Not Foundエラーを送出するので、表を手動で作成しなければなりません。

「自動表作成(開発のみ)」を参照してください。

OracleデータベースのSEQUENCEの自動生成

注意:

OracleデータベースのSEQUENCEの自動生成は、開発モードで動作しているサーバーでのみ機能します。

次の表は、WebLogic Serverがcreate-default-dbms-tablesの値に基づいてどのように自動SEQUENCE生成を処理するのかを説明しています。


表C-2 OracleデータベースのSEQUENCEの自動生成

<create-default-dbms-tables>の設定値 得られる動作

Disabled

EJBコンテナはSEQUENCE生成に関して何も行いません。これがデフォルト値です。

CreateOnly

EJBコンテナはSEQUENCEを作成し、enerator-name要素の値に「_WL」を追加してその名前を作成します。

DropAndCreate

EJBコンテナはSEQUENCEを作成し、generator-name要素の値に「_WL」を追加してその名前を作成します。

SEQUENCEのインクリメント値がkey-cache-size要素の値と一致しない場合、コンテナはkey-cache-sizeの値と一致するようにインクリメント値を変更します。

DropAndCreateAlways

EJBコンテナはSEQUENCEを作成し、generator-name要素の値に「_WL」を追加してその名前を作成します。

SEQUENCEのインクリメント値がkey-cache-size要素の値と一致しない場合、コンテナはkey-cache-sizeの値と一致するようにインクリメント値を変更します。

AlterOrCreate

EJBコンテナはSEQUENCEを作成し、generator-name要素の値に「_WL」を追加してその名前を作成します。

SEQUENCEのインクリメント値がkey-cache-size要素の値と一致しない場合、コンテナはkey-cache-sizeの値と一致するようにインクリメント値を変更します。


OracleデータベースのSEQUENCEの自動生成の詳細については、「OracleデータベースのSEQUENCEのサポート」を参照してください

次の例では、create-default-dbms-tables要素を指定します。

<create-default-dbms-tables>CreateOnly</create-default-dbms-tables>

database-specific-sql

値の範囲:なし

デフォルト値:なし

要件: database-typeの指定が必要

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    weblogic-query
      sql-query

機能

database-specific-sql要素では、データベース固有のSQL文を指定します。

<database-specific-sql>
    <database-type>SQLServer</database-type>
    <sql>SELECT name, phone, location, testid FROM medrecappPharmacyBeanTable WHERE
         testid = ?1 AND SUBSTRING(testid, 1,5) = 'local' ORDER BY name
    </sql>
</database-specific-sql>

database-type

値の範囲: DB2 | Informix | MySQL | Oracle | SQLServer | SQLServer2000 | Sybase

デフォルト値:なし

親要素:

weblogic-rdbms-jar

および

weblogic-rdbms-jar
  weblogic-rdbms-bean
    weblogic-quer
      sql-query
        database-specific-sql

機能

database-type要素では、基底WebLogic Server DBMSまたはベンダー固有のSQL文の実行対象となるDBMSとして使用するデータベースを指定します。weblogic-rdbms-jar要素でdatabase-typeを指定した場合、指定したデータベースは、database-specific-sql要素の別のdatabase-type要素によってオーバーライドされない限り、weblogic-rdbms-jarデプロイメント記述子ファイル全体に適用されます。

<database-type>Oracle</database-type>

data-source-jndi-name

値の範囲:有効なWebLogic Server JDBCデータ・ソース名

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

このBeanのデータベース接続で使用するJDBCデータ・ソース名を指定します。データソースの詳細は、『Oracle WebLogic Server JDBCアプリケーションの開発』を参照してください。

注意:

WebLogic Server 9.0より前では、この要素はdata-source-nameでした。

「table-name」を参照してください。

db-cascade-delete

値の範囲:なし

デフォルト値:デフォルトでは、データベースのカスケード削除は使用されません。EJBコンテナは、個別にSQL DELETEを発行してカスケード削除を実行します。

親要素:

weblogic-rdbms-bean
  weblogic-relationship-role

機能

アプリケーションが、データベースに組み込まれているカスケード削除のサポートを利用し、パフォーマンスが向上するようにします。この機能は、以下の場合にのみサポートされます。

  • Oracleデータベース

  • 1対1または1対多の関係

weblogic-cmp-rdbms-jar.xmldb-cascade-deleteが有効になっている場合は、以下のようにする必要があります。

  • ejb-jar.xmlcascade-deleteを有効にする

  • データベースの表定義でカスケード削除を有効にする

    注意:

    db-cascade-deleteを指定しない場合は、データベースのカスケード削除機能を有効にしないようにしてください(結果が不正確になります)。

Oracleデータベースでのカスケード削除の設定

次のOracleデータベースの表定義では、データベースで親のdeptが削除されるとemp行がすべて削除されます。

CREATE TABLE dept
(deptno   NUMBER(2) CONSTRAINT pk_dept PRIMARY KEY,
dname    VARCHAR2(9) );
CREATE TABLE emp
(empno    NUMBER(4) PRIMARY KEY,
ename    VARCHAR2(10),
deptno   NUMBER(2)   CONSTRAINT fk_deptno
REFERENCES dept(deptno)
ON DELETE CASCADE );

<weblogic-relationship-role>
    <db-cascade-delete/>
</weblogic-relationship-role>

dbms-column

値の範囲:有効なデータベース列

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  field-map

機能

フィールドがマップされるデータベース列の名前です。

注意:

大文字/小文字を区別しないデータベースの場合でも、dbms-columnでは大文字/小文字を区別します。

「field-map」を参照してください。

dbms-column-type

値の範囲: Blob | Clob | LongString | SybaseBinary

デフォルト値:なし

要件: BlobまたはClobを指定するには、dbms-default-valueOracleまたはDB2データベースに設定する必要がある

親要素:

weblogic-rdbms-bean
  field-map

機能

cmp-fieldの型を指定します。現在のフィールドをOracleまたはDB2データベース内のBlobまたはClob、またはSybaseデータベース内のLongStringまたはSybaseBinaryにマップします。

  • Blob - フィールドをOracleまたはDB2データベースのBlobにマップします。

  • Clob - フィールドをOracleまたはDB2データベースのClobにマップします。

  • LongString - setCharacterStreamを使用して文字列データをデータベースに書き込むようにコンテナに通知します。一部のJDBCドライバでは、4KBを超えるデータをsetStringで書き込むことに問題があります。

  • SybaseBinary - setBytesを使用してバイトをバイナリ列に書き込むようにコンテナに通知します(setBinaryStreamSybaseXADriverでは機能しないため)。

<field-map>
    <cmp-field>photo</cmp-field>
    <dbms-column>PICTURE</dbms-column>
    <dbms_column-type>OracleBlob</dbms-column-type>
</field-map>

dbms-default-value

値の範囲: DB2 | Informix| MySQL | Oracle | SQLServer | SQLServer2000 | Sybase

デフォルト値:

親要素:

weblogic-rdbms-bean
  field-map

機能

デフォルトの基底DBMSとして使用するデータベースを指定します。この値は、database-type要素によってオーバーライドできます。

<dbms-default-value>Oracle</dbms-default-value>

default-dbms-tables-ddl

値の範囲:有効なファイル名

デフォルト値:

親要素:

weblogic-rdbms-jar

機能

EJBコンテナが表作成スクリプトを記述するDDLファイル名を指定します。

delay-database-insert-until

値の範囲: ejbCreate | ejbPostCreate

デフォルト値: ejbPostCreate

要件:

親要素:

weblogic-rdbms-bean

機能

新しいCMP Beanがいつデータベースに挿入されるのかを指定します。指定可能な値で、以下の動作が行われます。

  • ejbCreate - ejbCreateの直後にデータベース挿入を実行します。この設定の場合は、不要な格納操作を避けることでejbCreateよりもパフォーマンスがよくなります。

  • ejbPostCreate - ejbPostCreateの直後に挿入を実行します。

この要素は、order-database-operationsFalseの場合のみ有効です。デフォルトでは、order-database-operationstrueです。デフォルトの場合は、トランザクションがコミットされたときに新しいBeanが挿入されます。

cmr-fieldがnull値を許可しないforeign-key列にマップされている場合、データベースの挿入はejbPostCreateの後まで遅延する必要があります。この場合、cmr-fieldejbPostCreateでnull以外の値に設定してからBeanをデータベースに挿入しなければなりません。

最大限の柔軟性を実現するため、関連BeanをejbPostCreateメソッドで作成することは避けてください。ejbPostCreateで関連Beanが作成され、データベースの制約によって関連Beanが未作成のBeanを参照できない場合は、メソッドが完了するまでデータベースの挿入は実行できません。

注意:

cmr-fieldは、Beanの主キーが不明な段階でejbCreateの中で設定することはできません。

<delay-database-insert-until>ejbPostCreate</delay-database-insert-until>

description

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    weblogic-query

または

weblogic-rdbms-jar
  weblogic-rdbms-bean
    sql-shape

機能

description要素は、親要素を示すテキストの指定に使用します。

<description>Contains a description of parent element</description>

disable-string-trimming

値の範囲: True | False

デフォルト値: False

親要素:

compatibility

機能

この要素は、WebLogic Server 9.0で導入された互換性フラグです。この要素では、String[]型のcmp-fieldを削除するかどうかを指定します。Trueに設定すると、文字列の削除が無効になります。文字列の削除の詳細については、「文字列値CMPフィールドの削除」および「文字列の削除を無効にする」を参照してください

<compatibility>
    <disable-string-trimming>True</disable-string-trimming>
</compatibility>

ejb-name

値の範囲: ejb-jar.xmlで定義したCMPエンティティBeanのejb-nameに一致する必要があります。

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

ejb-cmp-rdbms.xmlで定義したEJBを指定する名前です。この名前は、ejb-jar.xmlで定義したCMPエンティティBeanのejb-nameに一致している必要があります。

「table-name」を参照してください。

ejb-ql-query

値の範囲:

デフォルト値:

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    weblogic-query

機能

ejb-ql-query要素では、EJB-QL問合せを指定します。weblogic-cmp-jar.xmlデプロイメント記述子では、EJBファインダを実装しているか、またはWebLogic固有の拡張を備えているEJB-QLだけを指定します。標準EJB-QL機能だけを使用する問合せはejb-jar.xmlデプロイメント記述子で指定します。

「weblogic-query」を参照してください。

enable-batch-operations

値の範囲: True | False

デフォルト値: True

親要素:

weblogic-rdbms-jar

機能

WebLogic Server 8.1で導入されたこの要素は、EJBコンテナがデータベースのバッチ処理を許可するのかどうかを管理します(バッチ挿入、バッチ更新、およびバッチ削除を含む)。

この要素をTrueに設定すると、EJBはトランザクション中のデータベース処理をコミット時間まで遅延させます。

次のXMLサンプルでは、enable-batch-operations要素の使い方を示します。

<enable-batch-operations>True</enable-batch-operations>

enable-query-caching

値の範囲: True | False

デフォルト値: True

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    weblogic-query

または

weblogic-rdbms-jar
  weblogic-rdbms-relation

機能

WebLogic Server 9.0で導入された要素で、読取り専用エンティティEJBを問合せレベルでキャッシュするかどうかを指定します。読取り専用エンティティEJBを問合せレベルでキャッシュすると、パフォーマンスが向上します。これは、ファインダがキャッシュ内のEJBにアクセスできるようになり、データベースへのアクセスを回避できるからです。この値をTrueに設定した場合、アプリケーションまたはBeanレベルでキャッシュされる問合せの最大数を指定できます。キャッシュされる問合せの最大数を指定するには、weblogic-ejb-jar.xmlデプロイメント記述子のmax-queries-in-cacheを設定します。詳細については、「max-queries-in-cache」を参照してください

次のXMLサンプルでは、enable-query-caching要素の使い方を示します。

<enable-query-caching>True</enable-query-caching>

field-group

値の範囲:なし

デフォルト値: field-groupが指定されていないファインダと関係に対して、defaultという特殊なグループを使用します。デフォルト・グループには、Beanのcmp-fieldがすべて含まれますが、cmr-fieldは含まれません。

親要素:

weblogic-rdbms-relation

機能

field-group要素は、Beanのcmp-fieldcmr-fieldのサブセットを表します。Bean内の関連フィールドを、フォルトのあったグループに1つのユニットとしてまとめることができます。グループをファインダまたは関係に関連付けることができます。それによって、ファインダを実行するか、または関係に従った結果としてBeanがロードされたときに、グループ内の指定フィールドのみがロードされます。

フィールドは複数のグループに関連付けられている場合があります。この場合、フィールドに対してgetXXXメソッドを実行すると、そのフィールドを含む最初のグループで障害が発生します。

field-group要素には、以下の要素を指定できます。

<weblogic-rdbms-bean>
    <ejb-name>XXXBean</ejb-name>
    <field-group>
        <group-name>medical-data</group-name>
        <cmp-field>insurance</cmp-field>
        <cmr-field>doctors</cmr-fields>
    </field-group>
</weblogic-rdbms-bean>

field-map

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

field-map要素は、データベースの特定の列とBeanインスタンスのcmp-fieldの間のマッピングを表します。

任意指定のgroup-name要素は、cmp-fieldgetXXXメソッドが呼び出され、値がメモリーにないために、EJBコンテナがDBMSから値を読み込む必要がある場合にロードされるフィールド・グループを指定します。group-nameを省略すると、cmp-fieldがどのフィールド・グループでも明示的にリストされていない場合はデフォルト・グループ(すべてのcmp-fieldが含まれている)が使用されます。明示的にリストされている場合には、cmp-fieldのあるフィールド・グループが選択されます。したがって、cmp-fieldが複数のフィールド・グループでリストされている場合、またはコンテナがグループのいずれかを任意に選択する場合、開発者はgroup-nameを指定する必要があります。

dbms-column-type要素は任意で指定します。

field-map要素には、以下の要素を指定できます。

<field-map>
    <cmp-field>....</cmp-field>
    <dbms-column>...</dbms-column>
    <dbms-column-type>...</dbms-column-type>
    <group-name>...</group name>
</field-map>

finders-return-nulls

値の範囲: True | False

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  compatibility
    weblogic-query

機能

この要素は、WebLogic Server 9.0で導入された互換性フラグです。ファインダが結果としてNULLを返すことができるかどうかを指定します。

デフォルト

<compatibility>
    <finders-return-nulls>True</finders-return-value>
</compatibility>

foreign-key-column

値の範囲:有効な外部キー・データベース列名

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  column-map

機能

foreign-key-column要素は、データベース内の外部キーの列を表します。

「column-map」を参照してください。

foreign-key-table

値の範囲:有効なデータベース表名

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-relation
    weblogic-relationship-role
      relationship-role-map

機能

foreign-key-table要素は、外部キーを格納するDBMS表名を指定します。

「relationship-role-map」を参照してください。

generator-name

値の範囲:

デフォルト値:

親要素:

weblogic-rdbms-bean
  automatic-key-generation

機能

generator-name要素は、主キー・ジェネレータの名前を指定する場合に使用します。

  • generator-type要素がOracleで、WebLogic Serverが開発モードで動作している場合、EJBコンテナは自動SEQUENCE生成機能の過程でgenerator-nameに「_WL」を追加してそのOracleデータベースのSEQUENCEの名前を作成します。

    OracleデータベースのSEQUENCEの自動生成の詳細については、「OracleデータベースのSEQUENCEのサポート」を参照してください

  • generator-type要素がOracleで、WebLogic Serverがプロダクション・モードで動作している場合、EJBコンテナはOracleデータベースのSEQUENCEの名前をgenerator-nameの値に設定します。

  • generator-type要素がNamedSequenceTableの場合、generator-name要素は使用されるSEQUENCE_TABLEの名前になります。

「automatic-key-generation」を参照してください。

generator-type

値の範囲: Identity | Sequence | SequenceTable

デフォルト値:

親要素:

weblogic-rdbms-bean
  automatic-key-generation

機能

generator-type要素は、使用する主キー生成方法を指定します。

注意:

automatic-key-generationを使用する際は、database-type要素を設定する必要があります。

また、generator-typeはOracleデータベースのSEQUENCEの自動生成でも使用します。「OracleデータベースのSEQUENCEのサポート」を参照してください

generator-typeに対しては、次のデータベースがサポートされています。

  • Identity : Oracleデータベースはサポートされません。

  • Sequence : Oracle、DB2、およびInformix (バージョン9.2以降)データベースがサポートされます。

  • SequenceTable: すべてのデータベースがサポートされます。

「automatic-key-generation」を参照してください。

group-name

値の範囲:なし

デフォルト値:

field-group

および

caching-element

および

weblogic-query

および

field-map

および

weblogic-relationship-role

親要素:

weblogic-rdbms-relation
  field-group

機能

フィールド・グループの名前を指定します。

「field-group」を参照してください。

include-updates

値の範囲: True | False

デフォルト値: オプティミスティック同時実行性を使用するBeanではFalse他の同時実行性を使用するBeanではTrue

親要素:

weblogic-rdbms-bean
  weblogic-query

機能

現在のトランザクション中の更新を必ず問合せの結果に反映するかどうかを指定します。この要素をTrueに設定した場合、コンテナは現在のトランザクションによる変更をすべてディスクにフラッシュしてから問合せを実行します。値をFalseにすると、最高のパフォーマンスが得られます。

<weblogic-query>
    <query-method>
    <method-name>findBigAccounts</method-name>
    <method-params>
        <method-param>double</method-param>
    </method-params>
    </query-method>
    <ejb-ql-query>
        <weblogic-ql>WHERE BALANCE>10000 ORDER BY NAME</weblogic-ql>
    </ejb-ql-query>
    <include-updates>True</include-updates>
</weblogic-query>

instance-lock-order

値の範囲: AccessOrder | ValueOrder

デフォルト値: AccessOrder

親要素:

weblogic-rdbms-bean

機能

特定EJBのインスタンスのロックまたは処理順序を指定します。この要素は、この要素を使用しなければデッドロックが起こるアプリケーションでデッドロックを防止するために使用できます。instance-lock-orderは、同じEJBの複数のインスタンスに適用されるデータベース操作(更新など)がコンテナによって実行される場合に常に使用します。この要素は、Beanインスタンスでデータベース・ロックを取得させる操作の順序を指定します。

たとえば、instance-lock-orderを使用すると、データベース同時実行性を使用する特定のEJBインスタンスでEJBコンテナがejbStoreを呼び出す順序を指定できます。ejbStoreは、データベースが更新されるときに排他的ロックを取得できます。instance-lock-orderは、オプティミスティック同時実行性を使用するBeanがオプティミスティック・チェックの実行時にロックされる順序も制御します。

  • AccessOrder - コンテナは、トランザクションの過程でアプリケーションがBeanにアクセスした順序でロックが取得(またはアップグレード)されるようにBeanを処理します。これは、システムのすべてのトランザクションがBeanのインスタンス(最終的にはデータベース表の行)に同じ順序でアクセスする場合の推奨値です。

  • ValueOrder - Beanは、主キーの値に基づく順序で処理されます。複数の同時トランザクションが異なる順序で同じEJBのインスタンスにアクセスする場合のデッドロックを防止するために、ValueOrderを指定する必要があります。

    注意:

    ValueOrderが指定されている場合、EJBの主キー・クラスはjava.lang.Comparableインタフェースを実装する必要がありません(ただし、全体的な順序付けになります)。主キーがjava.lang.Comparableを実装しない場合、Beanは主キーのハッシュ・コード値を使用して部分的に順序付けされます。

<instance-lock-order>ValueOrder</instance-lock-order>

key-cache-size

値の範囲:

デフォルト値: 1

親要素:

weblogic-rdbms-bean
  automatic-key-generation

機能

自動主キー生成機能で利用可能な主キー・キャッシュのサイズをオプションとして指定します。また、EJBコンテナは自動SEQUENCE生成が有効なときにはこの値を使用してOracleデータベースのSEQUENCEのインクリメント値を計算します。「OracleデータベースのSEQUENCEのサポート」を参照してください

generator-typeの値が、

  • Oracleである場合、key-cache-sizeはOracleデータベースのSEQUENCE INCREMENT値と一致していなければなりません。この値とOracleデータベースのSEQUENCE INCREMENT値が一致していない場合は、キー重複の問題が起こります。

  • NamedSequenceTableである場合、key-cache-sizeは1回のDBMS呼出しでコンテナが取得するキーの数を指定します。

  • SQLServerである場合、key-cache-sizeは無視されます。

「automatic-key-generation」を参照してください。

key-column

値の範囲:有効な主キー列名

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  column-map

機能

key-column要素は、データベース内の主キーの列を表します。

「column-map」を参照してください。

lock-order

値の範囲:すべての正の整数

デフォルト値: 0

親要素:

weblogic-rdbms-bean

機能

このフラグを使用すると、トランザクションに複数のBeanおよび排他的同時実行性が関与する場合に、エンティティBeanのデータベース・ロックの順番を指定できます。最も小さい数値を付けられたBeanが最初にロックされます。

このフラグは、デッドロック状況を回避するためのみに使用します。現時点では、トランザクションがカスケード削除を実行する場合にのみ適用されます。

lock-order要素の例は次のとおりです。

<lock-order>1</lock-order>
    <!ELEMENT lock-order (PCDATA)>

max-elements

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  weblogic-query

機能

max-elementsは多値問合せによって返される要素の最大数を指定します。この要素は、JDBCのmaxRows機能とほぼ同じです。

max-elements要素の例は次のとおりです。

<max-elements>100</max-elements>
    <!ELEMENT max-element (PCDATA)>

method-name

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  query-method

機能

method-name要素は、ファインダ・メソッドまたはejbSelectメソッドの名前を指定します。

注意:

「*」文字はワイルドカードとして使用できません。

「weblogic-query」を参照してください。

method-param

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  method-params

機能

method-param要素には、Javaタイプのメソッド・パラメータの完全修飾名が含まれます。

<method-param>java.lang.String</method-param>

method-params

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  query-method

機能

method-params要素には、Javaタイプのメソッド・パラメータの完全修飾名の順序付きリストが含まれます。

「weblogic-query」を参照してください。

optimistic-column

値の範囲:有効なデータベース列名

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  table-map

機能

optimistic-column要素は、オプティミスティック同時実行性を実装するためのバージョン値またはタイムスタンプ値を格納するデータベース列を示します。オプティミスティック同時実行性の詳細については、「同時実行性ストラテジの選択」を参照してください

注意:

すべてのデータベースで大文字と小文字が区別されるわけではありませんが、この要素では、大文字と小文字を区別します。

次のXML例では、optimistic-column要素の使い方を示します。

<optimistic-column>ROW_VERSION</optimistic-column>

ROW_VERSIONは、同時実行性のチェックに使用する値が格納されるデータベース列の名前です。

order-database-operations

値の範囲: True | False

デフォルト値: True

親要素:

weblogic-rdbms-jar

機能

WebLogic Server 8.1で導入されたこの要素は、EJBコンテナが、トランザクション内のすべてのデータベース処理をコミット時間まで遅延し、処理間でのデータベースの依存関係を自動的にソートし、これらの処理を、一切のデータベース制約エラーが生じない方式でデータベースに送るかどうかを決定します。

enable-batch-operationsTrueの場合、コンテナは自動的にorder-database-operationsTrueに設定します。order-database-operationsを無効にするには、order-database-operationsenable-batch-operationsの両方をFalseに設定します。

「ejb-ql-query」「delay-database-insert-until」も参照してください。

<order-database-operations>True</order-database-operations>

pass-through-columns

値の範囲:任意の正の整数

デフォルト値:

親要素:

weblogic-rdbms-bean
  sql-shape

機能

WebLogic Server 9.0で導入された要素で、マップされずにSQL問合せの結果セットに渡される集合列の数を指定します。

「sql-shape」を参照してください。

primary-key-table

値の範囲:有効なデータベース表名

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-relation
    weblogic-relationship-role
      relationship-role-map

機能

primary-key-table要素は、主キーを格納するDBMS表名を指定します。主キーの詳細については、「主キーの使用」を参照してください

注意:

すべてのデータベースで大文字と小文字が区別されるわけではありませんが、この要素では、大文字と小文字を区別します。

query-method

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

weblogic-queryと関連付けられたメソッドを指定します。ejb-jar.xml記述子と同じ形式を使用します。

「weblogic-query」を参照してください。

relation-name

値の範囲:関連するejb-jar.xmlデプロイメント記述子ファイルで定義したejb-relationejb-relation-nameに一致する必要があります。ejb-relation-nameは省略可能ですが、関連するejb-jar.xmlデプロイメント記述子ファイルで定義したejb-relationごとに必要になります。

デフォルト値:なし

親要素:

weblogic-rdbms-relation

機能

relation-name要素は関係の名前を指定します。

コンテナ管理による関係の詳細は、「コンテナ管理による関係(CMR)の使用」を参照してください。

relationship-name要素の例は次のとおりです。

<weblogic-rdbms-jar>
    <weblogic-rdbms-relation>
        <relation-name>stocks-holders</relation-name>
            <table-name>stocks</table-name>
    </weblogic-rdbms-relation>
</weblogic-rdbms-jar>

relationship-caching

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean

機能

relationship-caching要素では、リレーションシップ・キャッシングを指定します。リレーションシップ・キャッシングについては、「リレーションシップ・キャッシング」を参照してください

relationship-caching要素には、以下の要素を指定できます。

<relationship-caching>
    <caching-name>cacheMoreBeans</caching-name>
    <caching-element>
        <cmr-field>accounts<</cmr-field>
        <group-name>acct_group</group-name>
        <caching-element>
            <cmr-field>address</cmr-field>
            <group-name>addr_group</group-name>
        </caching-element>
    </caching-element>
    <caching-element>
        <cmr-field>phone</cmr-field>
        <group-name>phone_group</group-name>
    </caching-element>
</relationship-caching>

relationship-role-map

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-relation
  weblogic-relationship-role

機能

relationship-role-map要素は、ある関係に加わっているBeanのキー列マッピングに対する外部キー列を指定します。

関係の中で呼び出されるCMP Beanは、複数のDBMS表にマップできます(詳細については、table-map要素を参照)。1対1または1対多の関係の外部キー側のBeanが複数の表にマップされている場合は、外部キー列が含まれる表の名前をforeign-key-table要素で指定する必要があります。

逆に、1対1または1対多の関係の主キー側のBeanまたは多対多の関係に参加しているBeanが複数の表にマップされている場合は、主キーが含まれる表の名前をprimary-key-table要素で指定する必要があります。

関係のどちら側のBeanも複数の表にマップされていない場合、foreign-key-table要素とprimary-key-table要素は省略可能です(使用される表が暗黙的であるため)。

コンテナ管理による関係の詳細は、「コンテナ管理による関係(CMR)の使用」を参照してください。

関係の外部キー側のBeanの複数表へのマッピング

1対1の関係の外部キー側のBean (Fk_Bean)は、複数の表にマップされます。外部キー列を持つ表は、foreign-key-table要素で指定する必要があります。

Fk_Beanは、2つの表Fk_BeanTable_1Fk_BeanTable_2にマップされます。関係の外部キー列は、表Fk_BeanTable_2にあります。外部キー列の名前は、Fk_column_1Fk_column_2です。主キー側のBean (Pk_Bean)は、主キー列Pk_table_pkColumn_1Pk_table_pkColumn_2を持つ1つの表にマップされています。

<relationship-role-map
    <foreign-key-table>Fk_BeanTable_2</foreign-key-table>
    <column-map>
        <foreign-key-column>Fk_column_1</foreign-key-column>
        <key-column>Pk_table_pkColumn_1</key-column>
    </column-map>
    <column-map>
        <foreign-key-column>Fk_column_2</foreign-key-column>
        <key-column>Pk_table_pkColumn_2</key-column>
    </column-map>
</relationship-role-map>

外部キー列のある表をコンテナが確認できるように、foreign-key-table要素は必ず指定します。

関係の主キー側のBeanの複数表へのマッピング

1対1の関係の主キー側のBean (Pk_bean)は複数の表にマップされますが、その関係の外部キー側のBean (Fk_Bean)は1つの表Fk_BeanTableにマップされます。外部キー列の名前は、Fk_column_1Fk_column_2です。

Pk_beanは、以下の表にマップされます。

  • Pk_BeanTable_1。主キー列は、Pk_table1_pkColumn_1Pk_table1_pkColumn_2

  • Pk_BeanTable_2。主キー列は、Pk_table2_pkColumn_1Pk_table2_pkColumn_2

<relationship-role-map>
    <primary-key-table>Pk_BeanTable_1</primary-key-table>
    <column-map>
        <foreign-key-column>Fk_column_1</foreign-key-column>
        <key-column>Pk_table1_pkColumn_1</key-column>
    </column-map>
    <column-map>
        <foreign-key-column>Fk_column_2</foreign-key-column>
        <key-column>Pk_table1_pkColumn_2</key-column>
    </column-map>
</relationship-role-map>

relationship-role-name

値の範囲:関連するejb-jar.xmlで定義したejb-relationship-roleejb-relationship-role-nameに一致する必要があります。

デフォルト値:なし

親要素:

weblogic-rdbms-relation
  weblogic-relationship-role

機能

relationship-role-name要素は関係のロール名を指定します。

コンテナ管理による関係の詳細は、「コンテナ管理による関係(CMR)の使用」を参照してください。

「weblogic-relationship-role」の例を参照してください

serialize-byte-array-to-oracle-blob

値の範囲: True | False

デフォルト値: False

親要素:

weblogic-rdbms-jar
  compatibility

機能

WebLogic Server 8.1 SP02で導入されたこの要素は、互換性フラグです。この要素では、Oracleデータベース内のBlobにマップされたbyte[]型のcmp-fieldをシリアライズするかどうかを指定します。デフォルトでは、このフラグの値はfalseです。つまり、コンテナはbyte[]を直接保持し、シリアライズしません。

WebLogic Server 8.1 SP02より前のバージョンでは、デフォルトによって、Oracleデータベース内のBlobにマップされたbyte[]型のcmp-fieldはシリアライズされました。旧式の動作に戻るには、erialize-byte-array-to-oracle-blobの値をtrueに設定します。

<compatibility>
   <serialize-byte-array-to-oracle-blob>true</serialize-byte-array-to-oracle-blob>
</compatibility>

serialize-char-array-to-bytes

値の範囲:True | False

デフォルト値: False

親要素:

weblogic-rdbms-jar
  compatibility

機能

この要素は、WebLogic Server 9.0で導入された互換性フラグです。この要素では、char[]型のcmp-fieldをシリアライズするかどうかを指定します。デフォルトでは、このフラグの値はFalseです。つまり、EJBコンテナはchar[]を直接保持し、シリアライズしません。char[]をシリアライズするには、この値をTrueに設定します。

<compatibility>
    <serialize-char-array-to-bytes>true</serialize-char-array-to-bytes>
</compatibility>

sql

値の範囲:有効なSQL

デフォルト値:なし

要件: データベース固有のSQLを使用するには、その対象となるデータベースをdatabase-type要素で指定する必要がある

親要素:

weblogic-rdbms-bean
  weblogic-query
    sql-query

および

weblogic-rdbms-bean
  weblogic-query
    sql-query
      database-specific-query

機能

sql要素には、標準またはデータベース固有のSQL問合せを指定します。EJB-QL言語の標準機能だけを使用する問合せは、ejb-jar.xmlデプロイメント記述子に指定しなければなりません。標準SQL、データベース固有のSQL、またはEJB-QLのWebLogic拡張を使用する問合せは、weblogic-cmp-jar.xmlデプロイメント記述子に指定します。

...
<weblogic-rdbms-bean>
    <weblogic-query>
        <sql-query>
            <sql>SELECT date_prescribed, dosage, drug, id, frequency,
                 instructions, pat_id, issuing_phys_id, record_id, 
                 refills_remaining FROM medrecappPrescription 
                 WHERE testid = ?1</sql>
        </sql-query>
    </weblogic-query>
...
</weblogic-rdbms-bean>

sql-query

値の範囲:

デフォルト値:なし

要件:データベース固有のSQLを使用するには、その対象となるデータベースをdatabase-typeで指定する必要がある

親要素:

weblogic-rdbms-bean
  weblogic-query

機能

sql-query要素では、標準およびデータベース固有のSQL問合せを指定できます。EJB-QLのWebLogicの拡張機能を使用しないEJB-QL問合せは、ejb-jar.xmlデプロイメント記述子に指定する必要があります。

WebLogic Server 9.0より前のリリースではEJB-QL問合せ(WebLogic拡張あり、なし)だけがサポートされていましたが、このリリースではSQL問合せ、EJB-QL問合せ(WebLogic拡張あり、なし)、またはこの2つの組み合わせがサポートされています。

<sql-query>
    <sql-shape-name>...</sql-shape-name>
    <sql>...</sql>
    <database-specific-sql>...</database-specific-sql>
    <database-type>...</database-type>
    <sql>...</sql>
    <unknown-primary-key-field>...</unknown-primary-key-field>
    <cmp-field>...</cmp-field>
</sql-query>

sql-select-distinct

値の範囲: True | False

デフォルト値: False

親要素:

weblogic-query

注意:

このリリースのWebLogic Serverでは、この要素は非推奨です。同じ機能を得るには、ファインダ問合せでSELECT DISTINCT句を直接使用してください。

機能

sql-select-distinct要素は、生成されるSQL SELECT文にDISTINCT修飾子が含まれるかどうかを指定します。DISTINCT修飾子を使用すると、データベースからユニークな行が返されます。

Oracleデータベースでは、FOR UPDATE句をSELECT DISTINCTと一緒に使用することはできません。したがって、呼出しチェーンのBeanにisolation-levelTransactionReadCommittedForUpdateのメソッドがある場合は、sql-select-distinct要素を使用できません。transaction-isolation要素はweblogic-ejb-jar.xmlで指定します。

この要素を含むXMLの例を示します。

<sql-select-distinct>True</sql-select-distinct>

sql-shape

値の範囲:

デフォルト値:

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    sql-query

機能

sql-shape要素では、SQL問合せによって返されるデータを指定します。この情報は常にデータベース側で提供されるわけではないので、sql-shapeの指定が必要になります。通常、sql-shape要素では返されるデータベースの表と列を指定します。より複雑な問合せの場合、sql-shapeでは、データベースによって返されるデータに存在する関係と、渡される必要がある(マップされてはならない)集合列が存在するかどうかも指定します。

sql-shape
    description
    sql-shape-name
    table
    pass-through-columns
    ejb-relation-name

sql-shape-name

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-bean
    weblogic-query
      sql-query
        sql-shape

機能

sql-shape-name要素を使用すると、sql-shapeを複数の問合せに関連付けることができます。同じsql-shapeを使用する問合せが複数存在する場合、その形式をいったん定義すれば、sql-shape-nameを参照することによって何度でも使用できます。

「sql-shape」を参照してください。

table-map

値の範囲:なし

デフォルト値:なし

要件:table-map要素に、そのBeanの主キー・フィールドのマッピングが含まれる必要があります。

親要素:

weblogic-rdbms-bean

機能

CMP Beanは、1つまたは複数のDBMS表にマップできます。table-map要素は、Beanのcmp-fieldと、表にマップされたすべてのcmp-fieldの表列の間のマッピングを指定します。CMP Beanを複数のDBMS表にマップする場合は、表ごとにtable-map要素を指定する必要があります。

1つのCMP Beanを複数の表にマップする場合、各表には、1つの特定のBeanインスタンスにマップする1行が含まれます。そのため、すべての表にはどの時点でも同数の行が含まれます。また、各表には均一の主キーの値の並びが含まれます。したがって、各表には均一の主キー列が含まれ、別々の表の対応している主キー列どうしは名前は違うとしても同じタイプでなければなりません。

table-map要素は、特定表の主キー列から、Beanの主キー列フィールドへのマッピングを指定しなければなりません。主キー以外のフィールドは1つの表にマップできるのみです。

verify-rowsverify-columns、およびoptimistic-column要素の使い方については、「オプティミスティック同時実行性でのデータ有効性のチェック」を参照してください

table-map要素には、以下の要素を指定できます。

<table-map>
    <table-name>DeptTable</table-name>
    <field-map>
        <cmp-field>deptId1</cmp-field>
        <dbms-column>t1_deptId1_column</dbms-column>
    </field-map>
    <field-map>
        <cmp-field>deptId2</cmp-field>
        <dbms-column>t1_deptId2_column</dbms-column>
    </field-map>
    <field-map>
        <cmp-field>location</cmp-field>
        <dbms-column>location_column</dbms-column>
    </field-map>
        <cmp-field>budget</cmp-field>
        <dbms-column>budget</dbms-column>
    </field-map>
    <verify-rows>Read</verify-rows>
    <verify-columns>Version</verify-columns>
    <optimistic-column>ROW_VERSION</optimistic-column>        
    <trigger-updates-optimistic-column>False
    </trigger-updates-optimistic-column>
    <version-column-initial-value>0</version-column-initial-value>
</table-map>

table-name

値の範囲:データベース内にあるソース表の有効な完全修飾SQL名

デフォルト値:

要件: table-nameを必ず設定する必要があります。

親要素:

weblogic-rdbms-bean
  weblogic-rdbms-relation

機能

表の完全修飾SQL名です。このBeanのdata-source用に定義したユーザーには、指定した表の読取りおよび書込み権限が必要ですが、スキーマ変更権限は必要ありません。

<weblogic-rdbms-jar>
    <weblogic-rdbms-bean>
        <ejb-name>containerManaged</ejb-name>
        <data-source-jndi-name>examples-dataSource-demoPool</data-source-jndi-name>
        <table-name>ejbAccounts</table-name>
    </weblogic-rdbms-bean>
</weblogic-rdbms-jar>

trigger-updates-optimistic-column

値の範囲:True | False

デフォルト値: False

親要素:

weblogic-rdbms-bean
  table-map

機能

WebLogic Server 9.0で導入されたtrigger-updates-optimistic-column要素は、同時実行性のチェックに使用されるoptimistic-columnで指定されたデータベース列値をEJBコンテナが自動更新するかどうかを指定します。trigger-updates-optimistic-columnのデフォルト値はFalseで、EJBコンテナはJDBCにSQL UPDATE文を送信するときにoptimistic-columnで指定されたデータベース列を自動更新します。データベース行の更新時にデータベース・トリガーを使用してバージョン値を更新する従来のアプリケーションが存在し、EJBコンテナによってバージョン値が自動更新されないようにする場合、この要素の値をTrueに設定します。

注意:

trigger-updates-optimistic-columnをTrueに設定した場合、Beanの作成時にデータベース・トリガーによってデータベース内のバージョン列が初期化されるようにしておく必要があります。

「table-map」を参照してください。

unknown-primary-key-field

値の範囲:有効なデータ型

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

unknown-primary-key-field要素では、主キーがejb-jar.xml記述子で指定されていない場合に主キーとして使用されるcmpフィールドを指定できます。指定した主キー・フィールドは、field-map要素でデータベース列にマップしなければなりません。指定した主キー・フィールドがejb-jar.xml記述子でcmpフィールドとして宣言されなかった場合、自動キー生成を有効にしなければならず、主キー・タイプはjava.lang.Longになります。

「weblogic-rdbms-bean」を参照してください。

use-select-for-update

値の範囲: True | False

デフォルト値: False

親要素:

weblogic-rdbms-bean

機能

Bean単位でペシミスティック同時実行性を強制します。Trueを指定すると、Beanがデータベースからロードされるときは常にSELECT ... FOR UPDATEが使用されます。TransactionReadCommittedForUpdateのトランザクション・アイソレーション・レベルとの相違点は、これがトランザクション・レベルではなく、Beanレベルで設定されるということです。

注意:

Sybase JConnectドライバでペシミスティックなロック方式(HOLDLOCKなど)を使用している場合、問合せにFOR UPDATE句が含まれている場合にカーソルが生成されるように、SELECT_OPENS_CURSOR=trueを指定する必要があります。

<weblogic-rdbms.jar>
    <weblogic-rdbms-bean>
        <ejb-name>containerManaged</ejb-name>
        <use-select-for-update>True</use-select-for-update>
    /weblogic-rdbms-bean>
</weblogic-rdbms-jar>

validate-db-schema-with

値の範囲: MetaData | TableQuery

デフォルト値: TableQuery

親要素:

weblogic-rdbms-jar

機能

validate-db-schema-with要素を指定すると、デプロイメント時にBeanが有効なデータベース・スキーマにマップされているかどうかをコンテナ管理による永続性でチェックします。

MetaDataを指定すると、WebLogic Serverは、JDBCメタデータを使用してスキーマを検証します。

TableQuery (デフォルト設定)を指定すると、WebLogic Serverは、表を直接問合せし、CMP実行時によって予期されているスキーマが表にあるかどうかを確認します。

validate-db-schema-with要素の例は次のとおりです。

<validate-db-schema-with>TableQuery</validate-db-schema-with>

verify-columns

値の範囲: Read | Modified | Version | Timestamp

デフォルト値: なし

要件: table-nameを必ず設定する必要があります。

親要素:

weblogic-rdbms-bean
  table-map

機能

verify-columns 要素は、Optimistic同時実行性ストラテジを使用したときに、WebLogic Serverに有効性をチェックさせたい表列を指定します。WebLogic Serverは、トランザクションの終了時、データベースにコミットする前に列をチェックし、他のどのトランザクションもそのデータを変更していないことを確かめます。

詳細については、「同時実行性ストラテジの選択」を参照してください。

<verify-columns>Modified</verify-columns>

verify-rows

値の範囲: Read | Modified

デフォルト値: Modified

要件: table-nameを必ず設定する必要があります。

親要素:

weblogic-rdbms-bean
  table-map

機能

verify-rows要素は、オプティミスティック同時実行性の使用時にEJBコンテナがチェックすべきである、表内の行を指定します。

  • Modified - トランザクションで更新または削除された行のみがチェックされます。この値にすると、2つのトランザクションが同時に同じ行を更新することがなく、更新が損失することはありませんが、異なるトランザクションで読込みと更新を交互に行うことは可能です。その結果、得られる一貫性のレベルは、ANSIのREAD_COMMITTEDレベルとREPEATABLE_READレベルの間になります。

  • Read - トランザクションが読み取るすべての行がチェックされるべきであることを指定します。これには、単に読み込まれるだけの行と、読み込まれた後でトランザクションによって更新または削除される行の両方が含まれます。Readオプションを指定すると、一般に、EJBコンテナが実行しなくてはならないオプティミスティック・チェックの回数が増えるため、付加的なオーバーヘッドが生じます。Readオプションを指定すると、コミットされたトランザクションは、トランザクションのコミット後まで別のトランザクションによって修正されないことが確認されている一連の行を読み込みます。この結果、SERIALIZABLEの一貫性のANSI定義と非常に近い、高度な一貫性が得られます。

    注意:

    verify-rowsReadに設定されていると、verify-columns要素ではModifiedの値を指定できません。この組み合わせでは、修正された行だけがEJBコンテナによってチェックされることになるためです。

詳細については、「同時実行性ストラテジの選択」を参照してください。

<verify-rows>Modified</verify-rows>

version-column-initial-value

値の範囲: 0または任意の正の整数

デフォルト値:なし

親要素:

weblogic-rdbms-bean
  table-map

機能

WebLogic Server 9.0で導入されたversion-column-initial-value要素では、オプティミスティック同時実行性を実装するために使用されるバージョン列の初期値を指定します。バージョン列は、optimistic-column要素で指定するデータベース列です。詳細については、「optimistic-column」を参照してください

「table-map」を参照してください。

weblogic-ql

値の範囲:

デフォルト値:

親要素:

weblogic-rdbms-bean
  weblogic-query

機能

weblogic-ql要素は、EJB-QLに対するWebLogic固有の拡張機能を含む問合せを指定します。ejb-jar.xmlデプロイメント記述子では、EJB-QL言語の標準機能だけを使用する問合せを指定しなければなりません。

「weblogic-query」を参照してください。

weblogic-query

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-bean

機能

weblogic-query要素では、標準またはデータベース固有のSQL問合せ、またはEJB-QLのWebLogic固有の拡張機能を使用する問合せを指定できます。SQLまたはEJB-QLのWebLogic拡張機能を使用しない問合せは、ejb-jar.xmlデプロイメント記述子で指定する必要があります。

問合せによってあらかじめキャッシュにロードしておく必要があるエンティティBeanを問合せで取得する場合は、weblogic-query要素を使用して、field-groupを問合せに関連付けます。

weblogic-query要素には、以下の要素を指定できます。

<weblogic-query>
    <description>...</description>
    <query-method>
        <method-name>findBigAccounts</method-name>
        <method-params>
            <method-param>double</method-param>
        </method-params>
    </query-method>
    <ejb-ql-query>
        <weblogic-ql>WHERE BALANCE>10000 ORDER BY NAME
        </weblogic-ql>
        <group-name>...</group-name>
        <caching-name>...</caching-name>
    </ejb-ql-query>
    <sql-query>
        <sql-shape>...</sql-shape>
        <sql>SELECT date_prescribed, dosage, drug, id, frequency, instructions,
             pat_id, issuing_phys_id, record_id, refills_remaining FROM
             medrecappPrescription WHERE testid = ?1</sql>
        <database-specific-sql>
            <database-type>SQLServer</database-type>
            <sql>SELECT name, phone, location, testid FROM medrecappPharmacyBeanTable
                 WHERE testid = ?1 AND
                 SUBSTRING(testid, 1,5) = 'local' ORDER BY name</sql>
        </database-specific-sql>
    </sql-query>
    <max-elements>...</max-elements>
    <include-updates>...</include-updates>
    <sql-select-distinct>...</sql-select-distinct>
</weblogic-query>

weblogic-rdbms-bean

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar

機能

weblogic-rdbms-beanは、WebLogic RDBMS CMP永続性タイプによって管理されるエンティティBeanを指定します。

weblogic-rdbms-bean
    ejb-name
    data-source-jndi-name
    unkonown-primary-key-field
    table-map
    field-group
    relationship-caching
    weblogic-query
    dalay-database-insert-until
    automatic-key-generation
    check-exists-on-method

weblogic-rdbms-jar

ここでは、weblogic-rdbms-jar要素について説明し、その例を示します。

機能

weblogic-rdbms-jar 要素は、WebLogic RDBMS CMPデプロイメント記述子の最上位の要素です。この要素には、1つまたは複数のエンティティBeanと、一連の関係(これについては省略可能)についてのデプロイメント情報が含まれます。

weblogic-rdbms-jarXML構造を示します。

weblogic-rdbms-jar
    weblogic-rdbms-bean
    weblogic-rdbms-relation
    create-default-dbms-tables
    validate-db-schema-with
    database-type

weblogic-rdbms-relation

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar

機能

weblogic-rdbms-relation要素は、WebLogic CMP永続性タイプによって管理されている1つの関係を表します。WebLogic Serverでは、以下の3種類の関係のマッピングをサポートしています。

  • 1対1の関係では、一方のBeanの外部キーがもう一方のBeanの主キーにマップされます。

  • 1対多の関係では、あるBeanの外部キーが別のBeanの主キーにマップされます。

  • 多対多の関係には、結合表のマッピングが伴います。結合表の各行には、関係に関与するエンティティの主キーに対応する2つの外部キーが格納されます。

コンテナ管理による関係の詳細は、「コンテナ管理による関係(CMR)の使用」を参照してください。

1対1、1対多、および多対多の関係の構成方法の例については、以降の節を参照してください。

1対1の関係の定義

例C-4例C-5に定義されているエンティティ間の1対1の関係を定義するweblogic-rdbms-bean要素を例C-6に示します。weblogic-rdbms-relation要素は、weblogic-cmp-jar.xmlファイルのweblogic-rdbms-bean要素の後に存在します。

注意:

NAMEは、Capital表の主キーの列名です。

<relationship-role-name>には、ejb-jar.xmlの<ejb-relationship-role>要素の<cmr-field>で指定された関連フィールドが入ります。

例C-4 Bean 1

<weblogic-rdbms-bean>
    <ejb-name>CountryEJB</ejb-name>
    <data-source-jndi-name>wlsd21-datasource</data-source-jndi-name>
    <table-map>
        <table-name>EXAMPLE07_COUNTRY</table-name>
        <field-map>
            <cmp-field>name</cmp-field>
            <dbms-column>NAME</dbms-column>
        </field-map>
        <field-map>
            <cmp-field>continent</cmp-field>
            <dbms-column>CONTINENT</dbms-column>
        </field-map>
    </table-map>
</weblogic-rdbms-bean>

例C-5 Bean 2

<weblogic-rdbms-bean>
    <ejb-name>CapitalEJB</ejb-name>
    <data-source-jndi-name>wlsd21-datasource</data-source-jndi-name>
    <table-map>
        <table-name>EXAMPLE07_CAPITAL</table-name>
        <field-map>
            <cmp-field>CAPITAL_NAME</cmp-field>
            <dbms-column>NAME</dbms-column>
        </field-map>
        <field-map>
            <cmp-field>continent</cmp-field>
            <dbms-column>CONTINENT</dbms-column>
        </field-map>
    </table-map>
</weblogic-rdbms-bean>

例C-6 1対1の関係の<weblogic-rdbms-relation>要素

<weblogic-rdbms-relation>
    <relation-name>CountryCapitalRel</relation-name>
    <weblogic-relationship-role>
        <relationship-role-name>CountryRole</relationship-role-name>
        <relationship-role-map>
            <column-map>
                <foreign-key-column>CAPITAL_NAME</foreign-key-column>
                <key-column>NAME</key-column>
            </column-map>
        </relationship-role-map>
    </weblogic-relationship-role>
</weblogic-rdbms-relation>

1対多の関係の定義

例C-7は、1対多の関係を定義するサンプルの<weblogic-rdbms-relation>要素を示しています。

注意:

<relationship-role-name>には、ejb-jar.xmlの<ejb-relationship-role>要素の<cmr-field>で指定された関連フィールドが入ります。

<foreign-key-column>は、関係の「多」側の表の列を指定する必要があります。

例C-7 1対多の関係の<weblogic-rdbms-relation>要素

<weblogic-rdbms-relation>
    <relation-name>OwnerDogRel</relation-name>
    <weblogic-relationship-role>
        <relationship-role-name>DogRole</relationship-role-name>
        <relationship-role-map>
            <column-map>
                <foreign-key-column>OWNER_NAME</foreign-<key-column>
                <key-column>NAME</key-column>
            </column-map>
        <relationship-role-map> 
    </weblogic-relationship-role>
</weblogic-rdbms-relation>

多対多の関係の定義

WebLogic Serverの多対多の関係には、結合表の物理的なマッピングが伴います。結合表の各行には、関係に関与するエンティティの主キーに対応する2つの外部キーが格納されます。

次の例は、FRIENDS BeanとEMPLOYEES Beanの間の多対多の関係を示しています。

例C-8 多対多の関係の<weblogic-rdbms-relation>要素

<weblogic-rdbms-relation>
    <relation-name>friends</relation-name>
    <table-name>FRIENDS</table-name>
    <weblogic-relationship-role>
        <relationship-role-name>friend</relationship-role-name>
        <relationship-role-map>
            <column-map>
                <foreign-key-column>first-friend-id</foreign-key-column>
                <key-column>id</key-column>
            </column-map
        </relationship-role-map>
    </weblogic-relationship-role>
    <weblogic-relationship-role>
        <relationship-role-name>second-friend</relationship-role-name>
        <relationship-role-map>
            <column-map>
                <foreign-key-column>second-friend-id</foreign-key-column>
                <key-column>id</key-column>
            </column-map>
        </relationship-role-map>
    </weblogic-relationship-role>
</weblogic-rdbms-relation>

図C-7FRIENDS結合表には、first-friend-idsecond-friend-idという2つの列があります。各列には、別の従業員の友人である特定の従業員を示す外部キーが格納されます。EMPLOYEES表の主キー列(key-column)はidです。この例では、EMPLOYEES Beanが1つの表にマップされています。EMPLOYEES Beanが複数の表にマップされている場合、主キー列(key-column)を格納する表をrelationship-role-mapで指定する必要があります。詳細については、「relationship-role-map」を参照してください

weblogic-relationship-role

値の範囲:なし

デフォルト値:なし

親要素:

weblogic-rdbms-jar
  weblogic-rdbms-relation

機能

weblogic-relationship-role要素は、ejb-jar.xmlで指定されたejb-relationship-roleの以下のDBMSスキーマ情報を指定します。

  • relationship-role-mapサブ要素は、関係の片側の外部キーと主キーのマッピングを指定します。1対1または1対多の関係の場合、関係の外部キー側のロールのみがマッピングを指定します。多対多の関係では、両方のロールがマッピングを指定します。詳細と例については、「relationship-role-map」を参照してください

  • group-nameを使用すると、ロールに対応するBeanが関係を移動した(つまりcmr getXXXメソッドを呼び出した)結果としてロードされたときにロードされるfield-groupを示すことができます。

  • db-cascade-deleteタグを使用すると、カスケード削除が、基底DBMSの組込みカスケード削除機能を使用するように指定できます。詳細については、「db-cascade-delete」を参照してください

コンテナ管理による関係の詳細は、「コンテナ管理による関係(CMR)の使用」を参照してください。

<weblogic-relationship-role>
    <relationship-role-name>...</relationship-role-name>
    <group-name> ....</group-name>
    <relationship-role-map>...
        ....
    </relationship-role-map> 
    <db-cascade-delete/>
</weblogic-relationship-role>