"Spring Boot's spring.jpa.open-in-view=true: Mendedahkan Anti-Corak OSIV dan Implikasinya
Memahami Sesi Terbuka dalam Paparan (OSIV)
The sifat spring.jpa.open-in-view dalam dokumentasi Spring Boot ialah bendera yang mengawal sama ada sesi Hibernate akan kekal terbuka semasa fasa pengendalian permintaan servlet Secara lalai, sifat ini ditetapkan kepada benar, mengaktifkan corak OSIV.
Akibat Penggunaan OSIV
Corak OSIV menimbulkan beberapa ketara kelemahan:
-
Kemerosotan Prestasi Pangkalan Data: Mod autokomit digunakan semasa fasa pemaparan, mengenakan tekanan pada pelayan pangkalan data.
-
Kekeliruan tentang Kebimbangan: Penyata pangkalan data dijana oleh logik perniagaan dan UI, merumitkan ujian dan kod penyepaduan penyelenggaraan.
-
Masalah Pertanyaan N 1: Keupayaan UI untuk melintasi persatuan boleh mencetuskan isu pertanyaan N 1.
-
Kesesakan Sambungan: Mengekalkan sambungan pangkalan data terbuka sepanjang fasa rendering memanjangkan masa pajakan dan menghalang concurrency.
Melumpuhkan OSIV dalam Spring Boot
Untuk melumpuhkan OSIV dan memastikan prestasi dan kebolehskalaan optimum:
- Tetapkan spring secara eksplisit .jpa.open-in-view: true=false dalam konfigurasi application.properties fail.
- Spring Boot mengeluarkan amaran apabila OSIV didayakan secara lalai, bermula dari versi 2.0, memaklumkan pembangun tentang kemungkinan isu.
Mengendalikan LazyInitializationException
Jika OSIV dilumpuhkan, "LazyInitializationException" mungkin berlaku apabila UI cuba mengakses persatuan yang dimulakan secara malas. Untuk mengelakkan pengecualian ini:
- Gunakan ambil sertai atau ambil anotasi bersemangat untuk mendapatkan semula entiti yang berkaitan.
- Gunakan ambil graf atau pertanyaan JPQL dengan klausa JOIN FETCH untuk memilih entiti berkaitan tertentu.
- Pertimbangkan untuk menggunakan peringkat perkhidmatan atau DAO yang berasingan untuk akses data, membenarkan strategi pengambilan data yang disesuaikan berdasarkan kes penggunaan.
Atas ialah kandungan terperinci Patutkah Anda Menggunakan Spring Boot `spring.jpa.open-in-view=true`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!