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!