Sesi dalam Hibernate adalah cache tingkat pertama, yang dapat dipahami sebagai cache tingkat proses (Bar Thread), yang ada selama proses (thread bar) berjalan.
Sesi ini dapat dipahami sebagai objek yang dapat mengoperasikan database, dan ada metode untuk mengoperasikan database dalam objek ini.
Di Java, cache biasanya mengacu pada ruang memori yang ditempati oleh sifat -sifat objek Java, biasanya beberapa atribut jenis koleksi. Serangkaian koleksi Java didefinisikan dalam kelas implementasi SesiMIMPL dari antarmuka sesi, dan koleksi Java ini membentuk cache sesi.
Secara umum (pemahaman saya tentang sesi): Sesi adalah perantara (objek) antara Hibernate dan DB. Ada dua hal atau fungsi dalam sesi ini.
(1) Metode untuk mengoperasikan database
(2) Ada beberapa atribut (set, dll.) Dalam sesi, yang menggunakan atribut ini untuk menyimpan bahasa SQL yang akan dikirim ke DB, cache data yang telah ditemukan dari DB, dll.
Cache sesi
Cache sesi terdiri dari serangkaian koleksi Java. Ketika suatu objek ditambahkan ke cache sesi, referensi ke objek ini ditambahkan ke koleksi Java. Di masa depan, bahkan jika variabel referensi dalam aplikasi tidak lagi mengacu pada objek, selama cache sesi tidak dihapus, objek akan tetap dalam siklus hidupnya.
Peran cache sesi:
1) Kurangi frekuensi mengakses database.
2) Pastikan bahwa objek dalam cache disimpan dalam sinkronisasi dengan catatan yang relevan dalam database.
Saatnya membersihkan cache dalam sesi:
1) Ketika metode transaksi komit () dipanggil, metode komit () pertama -tama membersihkan cache (asalkan flushmode.Commit/auto), dan kemudian mengirimkan transaksi ke database.
2) Ketika aplikasi memanggil sesi find () atau iterate (), jika properti dari objek persisten dalam perubahan cache, cache akan dibersihkan terlebih dahulu untuk memastikan bahwa hasil kueri dapat mencerminkan status terbaru dari objek persisten.
3) Ketika aplikasi menampilkan metode flush () dari sesi dipanggil.
Titik waktu ketika mode pembersihan sesi melakukan operasi cache pembersihan:
Antarmuka sesi
Antarmuka sesi adalah antarmuka paling penting yang disediakan oleh Hibernate untuk aplikasi untuk memanipulasi database. Ini menyediakan metode dasar untuk menyimpan, memperbarui, menghapus, dan meminta.
1.Save (): Tambahkan objek sementara ke cache, dan itu menjadi objek yang persisten
-> Pilih generator kunci utama yang ditentukan dalam file pemetaan untuk menetapkan OID yang unik ke objek persisten
-> Rencanakan pernyataan insert untuk merakit nilai properti saat ini dari objek parameter ke dalam pernyataan masukkan, tetapi metode save () tidak segera menjalankan pernyataan SQLinsert segera, dan hanya akan dieksekusi ketika sesi membersihkan cache.
-> Jika properti dari objek persisten dimodifikasi setelah metode save (), sesi akan menjalankan pernyataan sqlupdate tambahan saat membersihkan cache.
CATATAN: Metode save () digunakan untuk mempertahankan objek sementara!
Jika Anda meneruskan objek persisten ke metode save (), tidak ada operasi yang akan dilakukan, langkah -langkah yang berlebihan
Jika objek negara bebas diteruskan ke metode save (), sesi akan memprosesnya sebagai objek sementara dan memasukkan catatan ke dalam database lagi, yang tidak memenuhi kebutuhan bisnis!
2. UPDATE (): Tambahkan kembali objek pelanggan ke cache sesi dan ubah menjadi objek persisten.
---> Jadwalkan pernyataan pembaruan, yang hanya akan dieksekusi ketika cache dibersihkan, dan nilai atribut dalam objek parameter akan dikumpulkan ke dalam pernyataan pembaruan ketika dieksekusi.
CATATAN: UPDATE () Mengubah objek gratis menjadi objek persisten.
Selama objek gratis dikaitkan dengan sesi melalui metode pembaruan (), sesi akan menjalankan pernyataan pembaruan yang direncanakan dengan metode pembaruan saat membersihkan cache.
3.SaveorUpdate (): Ini berisi kedua fungsi metode save () dan update (). Jika parameter yang diteruskan adalah objek sementara, hubungi metode simpan. Jika parameter adalah objek gratis, hubungi metode Update (). Jika parameter yang ditularkan adalah objek yang persisten, kembalikan secara langsung.
4.Load ()/get (): Mereka akan memuat objek persisten dari database berdasarkan OID yang diberikan. Perbedaannya adalah bahwa ketika tidak ada catatan yang sesuai dengan OID dalam database, metode LOAD () akan melempar pengecualian ObjectNotFoundException, dan metode GET () akan mengembalikan NULL.
5.Delete (): digunakan untuk menghapus catatan yang sesuai dengan objek parameter dari database. Jika parameter yang diteruskan adalah objek yang persisten, sesi berencana untuk menjalankan pernyataan hapus. Jika parameter yang dilewati adalah objek gratis, pertama -tama buat objek gratis yang terkait dengan sesi untuk menjadikannya objek yang persisten, dan kemudian rencanakan pernyataan hapus untuk dieksekusi saat membersihkan cache.
6.evict (): Hapus objek persisten yang ditentukan oleh parameter dari cache.
Acara yang berlaku: Anda tidak ingin sesi terus memperbarui database secara sinkron sesuai dengan keadaan objek.
Dalam hal pembaruan batch atau penghapusan batch, ketika suatu objek diperbarui atau dihapus, memori yang ditempati oleh objek dirilis tepat waktu. Tentu saja, operasi batch memberikan prioritas pada JDBC.
7.clear (): Hapus semua objek persisten di cache.
Meringkaskan
Di atas adalah pemahaman cepat tentang seluruh konten sesi di Hibernate, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!