OpenJPA を基盤に構築された jpa-2.0 フィーチャーでは、SchemaMapper ツールを使用することによって、データ定義言語 (DDL) を生成することも、データベースと直接対話して、
JPA エンティティー定義に基づいた表スキーマを定義することもできます。EclipseLink を基盤に構築された jpa-2.1 フィーチャーでは、
JPA 2.1 仕様に追加された新しい Schema Generator フィーチャーを使用できます。このフィーチャーは、OpenJPA SchemaMapper に似た機能を備えています。
このタスクについて
OpenJPA SchemaMapper と同様の機能が必要な場合、JPA 2.1 仕様にある Schema Generator フィーチャーを構成できます。
手順
- persistence.xml ファイル内のパーシスタンス・ユニット定義に、データベース・アクション・プロパティーを指定します。
指定できる値は、none、create、drop、drop-and-create です。 それぞれの値は、データベースに対して実行されるアクションに対応します。以下の例では、
パーシスタンス・ユニットに指定されたエンティティーに対応する表がドロップされ、その場所に新しい表が作成されます。
<persistence-unit name="pu">
<properties>
<property name="javax.persistence.schema-generation.database.action"
value="drop-and-create" />
...
</properties>
</persistence-unit>
- スクリプト・アクション・プロパティーを指定します。指定できる値は、none、create、drop、drop-and-create です。 none 以外の値を指定する場合は、ターゲット・プロパティーも指定する必要があります。これは、
スクリプト・アクションが create (エンティティー定義に対して create ステートメントを生成する) の場合は、
対応する作成ターゲット・プロパティーを指定して、ステートメントが書き込まれるターゲット・ファイルを指定する必要があることを意味します。
<persistence-unit name="pu">
<properties>
<property name="javax.persistence.schema-generation.scripts.action"
value="drop-and-create" />
<property name="javax.persistence.schema-generation.scripts.create-target"
value="createTargetFile.ddl"/>
<property name="javax.persistence.schema-generation.scripts.drop-target"
value="sampleDrop.ddl"/>
...
</properties>
</persistence-unit>