SpringBoot構成を使用したMySQLJDBCタイムゾーンの設定
1. 概要
MySQLに日付を保存しているときに、データベースの日付がシステムやJVMとは異なることに気付くことがあります。
また、別のタイムゾーンでアプリを実行する必要がある場合もあります。
このチュートリアルでは、Spring Boot構成を使用してMySQLのタイムゾーンを変更するさまざまな方法を見ていきます。
2. URLパラメータとしてのタイムゾーン
タイムゾーンを指定する1つの方法は、接続URL文字列をパラメーターとして指定することです。
タイムゾーンを選択するには、 connectionTimeZone プロパティを追加して、タイムゾーンを指定する必要があります。
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?connectionTimeZone=UTC
username: root
password:
もちろん、代わりにJava構成を使用してデータソースを構成することもできます。
このプロパティおよびその他の詳細については、MySQL公式ドキュメントを参照してください。
3. スプリングブートプロパティ
または、 connectionTimeZone URLパラメータでタイムゾーンを指定する代わりに、SpringBoot構成でtime_zoneプロパティを指定できます。
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
またはYAMLを使用する場合:
spring:
jpa:
properties:
hibernate:
jdbc:
time_zone: UTC
4. JVMのデフォルトのタイムゾーン
そしてもちろん、Javaのデフォルトのタイムゾーンを更新することもできます。
タイムゾーンを選択するには、URLにプロパティ forceConnectionTimeZoneToSession =trueを追加する必要があります。 次に、簡単なメソッドを追加する必要があります。
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
しかし、
5. 結論
このチュートリアルでは、SpringでMySQLJDBCタイムゾーンを構成するいくつかの異なる方法を見ました。 これは、URLパラメータ、プロパティ、およびJVMのデフォルトのタイムゾーンを変更することで行いました。
いつものように、例の完全なセットはGitHubの以上です。