Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menyimpan Tarikh/Masa dan Cap Masa dalam Zon Waktu UTC dengan JPA dan Hibernate?

Bagaimana untuk Menyimpan Tarikh/Masa dan Cap Masa dalam Zon Waktu UTC dengan JPA dan Hibernate?

Barbara Streisand
Barbara Streisandasal
2024-10-31 16:46:30680semak imbas

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

Menyimpan Tarikh/Masa dan Cap Masa dalam Zon Waktu UTC dengan JPA dan Hibernate

Apabila bekerja dengan data temporal dalam sistem pangkalan data, adalah penting untuk pertimbangkan zon waktu di mana data disimpan dan ditafsirkan. Untuk aplikasi yang memerlukan pengendalian tarikh dan masa yang konsisten merentas berbilang zon waktu, menggunakan zon waktu Waktu Universal Selaras (UTC) menyediakan rujukan standard.

Untuk mengkonfigurasi JPA dan Hibernate untuk menyimpan dan mendapatkan semula nilai tarikh/masa sebagai UTC , tanpa mengira zon waktu tempatan, langkah berikut boleh diambil:

Konfigurasi Entiti JPA:

<code class="java">public class Event {
    @Id
    public int id;

    @Temporal(TemporalType.TIMESTAMP)
    @TimeZone(value = TimeZone.UTC)
    public java.util.Date date;
}</code>

Dengan menambahkan @TimeZone(value = TimeZone.UTC ) ke medan tarikh beranotasi, anda dengan jelas menyatakan bahawa tarikh itu harus ditafsirkan dan disimpan dalam masa UTC.

Konfigurasi Hibernate untuk Zon Waktu UTC:

Hibernate 5.2 dan Di Atas:

Dalam Hibernate 5.2 dan versi yang lebih baru, anda boleh mengatasi zon waktu sistem lalai yang digunakan oleh Hibernate dengan mengkonfigurasi sifat hibernate.jdbc.time_zone dalam fail konfigurasi JPA anda (properties.xml ):

<code class="xml"><property name="hibernate.jdbc.time_zone" value="UTC"/></code>

Aplikasi Spring Boot:

Jika anda menggunakan Spring Boot, anda boleh menetapkan sifat di atas dalam fail application.properties anda:

<code class="properties">spring.jpa.properties.hibernate.jdbc.time_zone=UTC</code>

Contoh:

Pertimbangkan entiti JPA yang ditakrifkan dalam contoh. Jika medan tarikh ditetapkan kepada 2008-Feb-03 9:30am PST (Pacific Standard Time), Hibernate akan menyimpan nilai sebagai 2008-Feb-03 5:30pm UTC dalam pangkalan data. Ini memastikan bahawa masa disimpan dan diambil secara konsisten dalam zon waktu UTC, tanpa mengira tetapan pelayan atau zon waktu setempat.

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Tarikh/Masa dan Cap Masa dalam Zon Waktu UTC dengan JPA dan Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn