Pengurusan Tarikh dan Masa Menggunakan Zon Waktu UTC dengan JPA dan Hibernate
Isu:
Bagaimanakah kita boleh mengkonfigurasi JPA dan Hibernate untuk menyimpan dan mendapatkan semula nilai tarikh/masa dalam zon waktu UTC?
Struktur Entiti JPA:
Pertimbangkan entiti JPA beranotasi berikut:
<code class="java">public class Event { @Id public int id; @Temporal(TemporalType.TIMESTAMP) public java.util.Date date; }</code>
Senario:
Andaikan kita mempunyai nilai tarikh sebagai 2008-Feb-03 9:30 pagi Waktu Standard Pasifik (PST). Kami berhasrat untuk menyimpannya dalam pangkalan data sebagai waktu UTC yang sepadan, 2008-Feb-03 5:30 petang. Begitu juga, apabila diambil daripada pangkalan data, tarikh ini harus ditafsirkan sebagai UTC, bermakna 5:30 petang UTC diterjemahkan kepada 9:30 pagi PST apabila dipaparkan.
Penyelesaian:
Dari Hibernate 5.2 dan seterusnya, anda boleh menetapkan zon waktu UTC secara eksplisit dengan memanfaatkan sifat berikut:
<code class="xml"><property name="hibernate.jdbc.time_zone" value="UTC"/></code>
Tambahkan sifat ini pada fail konfigurasi JPA properties.xml.
Untuk pengguna Spring Boot , tambahkan harta pada fail application.properties:
<code class="properties">spring.jpa.properties.hibernate.jdbc.time_zone=UTC</code>
Dengan melaksanakan konfigurasi ini, JPA dan Hibernate akan memastikan semua nilai tarikh/masa disimpan dan diambil semula dalam zon waktu UTC, menjamin tafsiran yang konsisten dan ketepatan merentas zon waktu yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan dan Mendapatkan Nilai Tarikh/Masa dalam UTC dengan JPA dan Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!