LoginSignup
0
3

More than 1 year has passed since last update.

【Java】Spring Data JPA関連プロパティ @application.properties

Posted at

プロパティ一覧(随時追加)

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).

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3