ホームページ  >  記事  >  Java  >  JPA と Hibernate を使用して日付/時刻とタイムスタンプを UTC タイムゾーンに保存するにはどうすればよいですか?

JPA と Hibernate を使用して日付/時刻とタイムスタンプを UTC タイムゾーンに保存するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 16:46:30680ブラウズ

How to Store Date/Time and Timestamps in UTC Time Zone with JPA and Hibernate?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。