はじめに
JPA2.1 から標準化されたスキーマ生成プロパティですが、意外にまとまった情報が見当たらないので。
プロパティ一覧
javax.persistence.schema-generation | 説明 |
---|---|
connection |
スキーマ生成時などで特定のJDBC接続を使用する場合に接続文字列を指定する |
create-database-schemas |
データベーススキーマの自動生成有無を指定するtrue : スキーマを自動生成するを作成するfalse : スキーマを自動生成しない(デフォルト) |
database.action |
テーブルの自動生成方法(DDLの発行)を指定するcreate : 自動生成するが既存はそのままdrop-and-create : 既存テーブルを削除して新規生成drop : 既存テーブルを削除none : なにもしない(デフォルト) |
create-source drop-source |
自動生成/自動削除の元情報を指定するmetadata : 生成の元情報としてEntityのアノテーション定義を使用script : 別途指定のスクリプトにより自動生成metadata-then-script : メタデータで生成後にスクリプトで生成script-then-metadata : スクリプトで生成後にメタデータで生成 |
create-script-source drop-script-source |
create-source / drop-source の指定が metadata 以外の場合に、スクリプトのパスを指定する |
scripts.action |
自動生成用のスクリプトファイルの出力方法を指定するnone : 作成しない(デフォルト)create : 自動生成用スクリプトファイルを出力drop-and-create : 自動生成・削除用スクリプトファイルを出力drop : 削除用スクリプトファイルを出力 |
scripts.create-target scripts.drop-target |
scripts.action で生成するファイルのパスを指定する |
persistence.xml での設定例
drop-and-create をスクリプトで行う例。
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="examplePU" transaction-type="JTA"> <jta-data-source>java:global/ExampleDataSource</jta-data-source> <properties> <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> <property name="javax.persistence.schema-generation.create-source" value="script"/> <property name="javax.persistence.schema-generation.create-script-source" value="META-INF/sql/create.sql" /> <property name="javax.persistence.sql-load-script-source" value="META-INF/sql/data.sql" /> <property name="javax.persistence.schema-generation.drop-source" value="script" /> <property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/sql/drop.sql" /> </properties> </persistence-unit> </persistence>
Spring Boot での設定例
自動生成を行い、DDL をファイル出力する例。
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql
- 作者:溝口賢司
- 出版社/メーカー: 秀和システム
- 発売日: 2018/04/23
- メディア: Kindle版
- 作者:田村達也
- 発売日: 2018/09/08
- メディア: Kindle版