JPA Schema Generation プロパティ

f:id:Naotsugu:20200222145826p:plain


はじめに

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



Spring Data JPAプログラミング入門

Spring Data JPAプログラミング入門

  • 作者:溝口賢司
  • 出版社/メーカー: 秀和システム
  • 発売日: 2018/04/23
  • メディア: Kindle版