プロパティ一覧(随時追加)
spring.jpa.properties.hibernate.jdbc.time_zone=Asia/Tokyo
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.jdbc.time_zone
・データベースのタイムゾーンを設定する。
・設定方法は2つあるが、今回は設定方法2。
設定方法1:JDBC URLのパラメータとして設定
設定方法2:spring.jpa.properties.hibernate.jdbc.time_zoneを設定
spring.jpa.database-platform
・JPA/Hibernateが生成するSQLを各DBのDDL,DMLに変換する際に「MySQL?MySQLだったらどのDialect?」の情報を必要なため、その定義を行う。
MySQLのストレージエンジンとは?
・テーブルにデータを書き込んだり読み出したりする部分を担っているプログラム。
・現在の MySQL ではデフォルトのストレージエンジンは InnoDB。
Database Dialectとは?
・JPA/Hibernateが生成したSQLを、各DB(MySQL等)のDDL,DMLに変換する際に利用される設定
・spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
の場合、
MySQLのストレージエンジンであるInnoDBのDDL,DMLに変換されるようになる。
・このプロパティを設定しなくても、自動でDataSourceからDialectを特定してくれる。
A database dialect is a configuration setting for platform independent software (JPA, Hibernate, etc) which allows such software to translate its generic SQL statements into vendor specific DDL, DML.
spring.jpa.hibernate.naming.physical-strategy
・Entityクラス と DB 間で「テーブル名」「カラム名」のマッピングを行う際にNaming Strategyを利用する。デフォルトのNamingStrategyとは別に定義したい場合に、このプロパティを設定する。
・Naming Strategyは「Explicit Strategy」と「Imlicit Strategy」の2つ存在する。
spring.jpa.show-sql
・JPAが発行したSQLをログに出すかどうか。
spring.jpa.hibernate.ddl-auto
・アプリケーション起動時に、Entityクラスに対応するテーブルを作るかどうか。
・デフォルト値は組み込みDB(H2等)の場合はcreate-drop
、それ以外(MySQL等)はnone
。
選択肢 | 動作 |
---|---|
none | 何もしない |
create | アプリ起動時にDrop&Createする。前回まで入っていたデータは消去される。 |
create-drop | アプリ起動時にCreateする。セッション切断時にDropする。Good For UT. |
validate | @EntityクラスとDBが一致しているか確認する。不一致の場合アプリ起動が失敗する。 |
update | 追加の変更のみ反映する。1カラム追加=ALTER TABLEで該当カラム追加。 |
DBの種類 | デフォルト値 |
---|---|
組み込み(H2等) | create-drop |
組み込みでない | none |
Spring Boot chooses a default value for you based on whether it thinks your database is embedded (default create-drop) or not (default none).