Mengintegrasikan Objek Java.time dengan Pangkalan Data JDBC dan SQL
Artikel ini menunjukkan cara menyepadukan java.time.LocalDate
objek dengan lancar dengan pangkalan data SQL menggunakan Java Database Connectivity (JDBC).
JDBC 4.2 dan Kemudian: Interaksi Langsung
Pemandu JDBC moden (JDBC 4.2 dan ke atas) menawarkan sokongan langsung untuk java.time
objek. Pemacu seperti pemacu pangkalan data H2 menggunakan kaedah setObject
dan getObject
untuk pemindahan data yang cekap. Memasukkan LocalDate
melibatkan penggunaan PreparedStatement.setObject
, menentukan jenis objek yang sesuai. Retrieval menggunakan ResultSet.getObject
, dengan cara yang sama menyatakan jenis pulangan yang dijangkakan untuk keselamatan jenis yang dipertingkatkan.
Mengendalikan Pemacu JDBC Tidak Mematuhi
Untuk pemandu lama yang tidak mematuhi JDBC 4.2, anda perlu memanfaatkan kelas java.sql
tarikh-masa warisan. Tukar LocalDate
kepada java.sql.Date
menggunakan java.sql.Date.valueOf(myLocalDate)
. Sebaliknya, tukarkan java.sql.Date
yang diambil kembali kepada LocalDate
menggunakan java.sql.Date.toLocalDate()
.
Contoh Ilustrasi (Pangkalan Data H2)
Contoh berikut mempamerkan kedua-dua pendekatan patuh dan tidak patuh menggunakan pangkalan data H2:
// JDBC 4.2 compliant approach LocalDate today = LocalDate.now(); preparedStatement.setObject(1, today.minusDays(1)); // Non-compliant approach java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate); preparedStatement.setDate(1, mySqlDate);
Memanfaatkan Rangka Kerja java.time
Rangka kerja java.time
(tersedia dari Java 8 dan seterusnya) menggantikan kelas tarikh-masa lama. Menggunakan objek java.time
secara langsung dengan interaksi pangkalan data adalah disyorkan, terutamanya dengan pemacu yang mematuhi JDBC 4.2. Ambil perhatian bahawa banyak pemacu dan ORM JDBC moden (seperti Hibernate 5.0 ) menyediakan sokongan asli untuk jenis java.time
.
Pertimbangan Utama
java.time.LocalDate
memetakan kepada jenis data SQL DATE
.java.time
ke Java 6 dan 7.java.time
terbina dalam; ThreeTenABP menyesuaikan ThreeTen-Backport untuk versi Android yang lebih awal.Atas ialah kandungan terperinci Bagaimanakah Saya Menggunakan JDBC untuk Memasukkan dan Mengambil Objek Java.time dalam Pangkalan Data SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!