ヘッダーをスキップ
Oracle® Fusion Middleware Oracle TopLink Java Persistence API (JPA)拡張機能リファレンス
12c (12.1.2)
E48005-01
  目次へ移動
目次

前
 
次
 

ddl-generation

eclipselink.ddl-generationを使用して、TopLinkでデプロイメント時にデータベース・スキーマ(表および制約)用にデータ定義言語(DDL)を生成する方法を指定します。

表5-29は、この永続性プロパティの値を説明しています。

表5-29 ddl-generationの有効値

Value 説明

create-tables

TopLinkでは、表ごとにCREATE TABLE SQLの実行が試行されます。

この表がすでに存在する場合、TopLinkは、特定のデータベースとJDBCドライバの組合せに応じたデフォルトの動作に従います(CREATE TABLE SQLが既存の表について発行された場合)。ほとんどの場合、例外がスローされ、表は作成されず、既存の表が使用されます。その後、EclipseLinkでは、次の文の処理に進みます。

create-or-extend-tables

TopLinkによって、表の作成が試行されます。表が存在する場合は、TopLinkによって、欠落しているすべての列が追加されます。

drop-and-create-tables

TopLinkによって、すべての表のDROPが試行された後、すべての表のCREATEが試行されます。なんらかの問題が発生した場合、TopLinkでは、特定のデータベースとJDBCドライバの組合せに応じたデフォルト動作に従った後、次の文の処理に進みます。

このことは、開発においてスキーマが頻繁に変更される場合、または、テストにおいて既存データを消去する必要がある場合に役立ちます。

注意: drop-and-createを使用すると、表を削除したときに表内のすべてのデータが削除されます。データベース内に重要なデータが存在する本番スキーマでは、このオプションを使用しないでください。スキーマが大幅に変更された場合は、古い制約がデータベース内に存在することによって、古い表を削除できないことがあります。このことによって、別のメカニズムを使用して、古いスキーマを削除することが必要となる場合があります。

none

(デフォルト) DDLは生成されず、スキーマも生成されません。


使用方法

eclipselink.ddl-generation.output-mode = databaseである場合にのみ、create-or-extend-tablesを使用できます。

Java SE環境で永続性を使用しており、表を作成することなくDDLファイルを作成する場合、追加的にJavaシステム・プロパティINTERACT_WITH_DBを定義して、その値をfalseに設定します。

例5-17に、persistence.xmlファイルでこのプロパティを使用する方法を示します。

例5-17 persistence.xmlでのddl-generationの使用

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
<property name="eclipselink.create-ddl-jdbc-file-name" value="createDDL_ddlGeneration.jdbc"/>
<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc"/>
<property name="eclipselink.ddl-generation.output-mode" value="both"/>

例5-18に、プロパティ・マップでこのプロパティを使用する方法を示します。

例5-18 プロパティ・マップでのddl-generationの使用

import org.eclipse.persistence.config.PersistenceUnitProperties;
propertiesMap.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.DROP_AND_CREATE);
propertiesMap.put(PersistenceUnitProperties.DDL_GENERATION_MODE, PersistenceUnitProperties.BOTH);
propertiesMap.put(PersistenceUnitProperties.CREATE_JDBC_DDL_FILE, "create.sql");

関連項目

詳細は、次を参照してください。