Rumah >pangkalan data >tutorial mysql >Mengapa Lazy Loading Gagal untuk Medan @Lob pada Musim Bunga dan Hibernate?

Mengapa Lazy Loading Gagal untuk Medan @Lob pada Musim Bunga dan Hibernate?

Susan Sarandon
Susan Sarandonasal
2024-11-02 18:28:02429semak imbas

Why Does Lazy Loading Fail for @Lob Fields in Spring and Hibernate?

Masalah Lazy Loading dengan @Lob dalam Spring dan Hibernate

Dalam aplikasi web yang menggunakan Spring dan Hibernate, rekod pangkalan data yang mengandungi data berkaitan fail adalah dipaparkan pada halaman web. Walaupun proses beroperasi dengan lancar apabila volum data adalah sederhana, kuantiti data yang berlebihan mencetuskan "OutOfMemoryError."

Sebagai langkah penyelesaian masalah awal, menetapkan sifat "blobField" kepada "null" menyelesaikan isu memori, membayangkan bahawa malas pemuatan tidak berkesan walaupun terdapat anotasi @Basic(fetch=FetchType.LAZY).

Penjelasan dan Penyelesaian

Menurut dokumentasi Hibernate, medan @Lob sememangnya malas dan melakukan tidak memerlukan anotasi Malas yang eksplisit. Walau bagaimanapun, tingkah laku yang tidak konsisten telah dilaporkan merentas pangkalan data dan pemacu.

Satu penyelesaian melibatkan teknik instrumentasi bytecode seperti Javassist atau Cglib.

Penyelesaian Disyorkan

Kepada menangani isu ini dengan pasti, adalah dicadangkan untuk menyusun semula pemetaan data. Daripada menggunakan sifat, buat pemetaan satu sama satu "palsu". Alih keluar medan LOB daripada kelas utama, wujudkan kelas baharu yang merujuk jadual dan kunci utama yang sama tetapi hanya mengandungi medan LOB yang diperlukan. Tandai pemetaan ini sebagai satu sama satu, ambil pilih dan malas benar. Pendekatan ini memastikan pemuatan malas semasa objek induk kekal dalam sesi.

Atas ialah kandungan terperinci Mengapa Lazy Loading Gagal untuk Medan @Lob pada Musim Bunga 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