JPA と Hibernate を使用して日付/時刻とタイムスタンプを UTC タイムゾーンに保存する
データベース システムで一時データを扱う場合、次のことが重要です。データが保存され解釈されるタイムゾーンを考慮してください。複数のタイム ゾーンにわたって一貫した日付と時刻の処理が必要なアプリケーションの場合、協定世界時 (UTC) タイム ゾーンを使用すると、標準の参照が提供されます。
日付/時刻値を UTC として保存および取得するように JPA と Hibernate を構成するには、ローカル タイム ゾーンに関係なく、次の手順を実行できます:
JPA エンティティ構成:
<code class="java">public class Event { @Id public int id; @Temporal(TemporalType.TIMESTAMP) @TimeZone(value = TimeZone.UTC) public java.util.Date date; }</code>
@TimeZone(value = TimeZone.UTC) を追加することで) 注釈付きの日付フィールドに追加するには、日付を UTC 時間で解釈して保存することを明示的に指定します。
UTC タイム ゾーンの Hibernate 構成:
Hibernate 5.2 以降:
Hibernate 5.2 以降のバージョンでは、JPA 構成ファイル (properties.xml) で hibernate.jdbc.time_zone プロパティを構成することで、Hibernate で使用されるデフォルトのシステム タイム ゾーンをオーバーライドできます。 ):
<code class="xml"><property name="hibernate.jdbc.time_zone" value="UTC"/></code>
Spring Boot アプリケーション:
Spring Boot を使用している場合は、application.properties ファイルで上記のプロパティを設定できます:
<code class="properties">spring.jpa.properties.hibernate.jdbc.time_zone=UTC</code>
例:
例で定義されている JPA エンティティを考えてみましょう。日付フィールドが 2008-Feb-03 9:30am PST (太平洋標準時) に設定されている場合、Hibernate は値を 2008-Feb-03 5:30pm UTC としてデータベースに保存します。これにより、サーバーやローカルのタイムゾーン設定に関係なく、時刻が一貫して UTC タイムゾーンで保存および取得されることが保証されます。
以上がJPA と Hibernate を使用して日付/時刻とタイムスタンプを UTC タイムゾーンに保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。