Show Table of Contents
23.9.4. EJB 2.x のコンテナ管理による永続性の設定
EJB 2.x のコンテナ管理による永続性 (CMP) サブシステムが任意の数のキージェネレーターを指定するよう設定できます。キージェネレーターは、CMP サービスにより永続化された各エンティティーを識別する一意のキーを生成するために使用されます。
UUID ベースのキージェネレーターと HiLo キージェネレーターの 2 つの種類のキージェネレーターを定義できます。
- UUID ベースのキージェネレーター
- UUID ベースのキージェネレーターは、UUID を使用してキーを生成します。UUID キージェネレーターは、一意の名前のみを持つ必要があり、他の設定は持ちません。UUID ベースのキージェネレーターは、以下のコマンド構文を使用して CLI で追加できます。
/subsystem=cmp/uuid-keygenerator=UNIQUE_NAME:add
例23.16 UUID キージェネレーターの追加
名前がuuid_identitiesの UUID ベースのキージェネレーターを追加するには、以下の CLI コマンドを使用します。/subsystem=cmp/uuid-keygenerator=uuid_identities:add
このコマンドで作成される XML 設定は以下のとおりです。<subsystem xmlns="urn:jboss:domain:cmp:1.0"> <key-generators> <uuid name="uuid_identities" /> </key-generators> </subsystem> - HiLo キージェネレーター
- HiLo キージェネレーターは、データベースを使用してエンティティー ID キーを作成および格納します。HiLo キージェネレーターは、一意の名前を持つ必要があり、データと、キーを格納するテーブルおよび列の名前を格納するために使用されるデータソースを指定するプロパティーで設定されます。HiLo キージェネレーターは、以下のコマンド構文を使用して CLI で追加できます。
/subsystem=cmp/hilo-keygenerator=UNIQUE_NAME/:add(property=value, property=value, ...)
例23.17 HiLo キージェネレーターの追加
/subsystem=cmp/hilo-keygenerator=HiLoKeyGeneratorFactory:add(create-table=true,create-table-ddl="create table HILOSEQUENCES (SEQUENCENAME varchar(50) not null, HIGHVALUES integer not null, constraint hilo_pk primary key (SEQUENCENAME))",data-source=java:jboss/datasources/ExampleDS, id-column=HIGHVALUES,sequence-column=SEQUENCENAME,table-name=HILOSEQUENCES,sequence-name=general,block-size=10)
このコマンドで作成される XML 設定は以下のとおりです。<subsystem xmlns="urn:jboss:domain:cmp:1.1"> <key-generators> <hilo name="HiLoKeyGeneratorFactory"> <block-size>10</block-size> <create-table>true</create-table> <create-table-ddl>create table HILOSEQUENCES (SEQUENCENAME varchar(50) not null, HIGHVALUES integer not null, constraint hilo_pk primary key (SEQUENCENAME))</create-table-ddl> <data-source>java:jboss/datasources/ExampleDS</data-source> <id-column>HIGHVALUES</id-column> <sequence-column>SEQUENCENAME</sequence-column> <sequence-name>general</sequence-name> <table-name>HILOSEQUENCES</table-name> </hilo> </key-generators> </subsystem>注記
block-size を !=0 の値に設定しないと、生成された PKey がインクリメントされないため、DuplicateKeyException が発生し、エンティティーの作成に失敗します。注記
一貫性を保つため、クラスターの場合は select-hi-ddl を FOR UPDATE として設定する必要があります。すべてのデーターベースはロッキング機能をサポートしません。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.