Patutkah Anda Menggunakan Sesi Terbuka Hibernate dalam Corak Pandangan?
Kelemahan Sesi Terbuka Hibernate dalam Corak Paparan
Corak Hibernate Open Session in View (OSIV) mengekalkan sesi terbuka sepanjang permintaan kitaran hayat. Walaupun pendekatan ini kelihatan mudah, ia membawa beberapa masalah:
1. Kekurangan Kawalan Transaksi
OSIV membenarkan manipulasi data di luar transaksi terurus, yang membawa kepada ketidakkonsistenan data. Setiap pernyataan yang dilaksanakan semasa pemaparan UI berlaku dalam mod autokomit, meningkatkan overhed I/O dan berpotensi menjejaskan prestasi pangkalan data.
2. Campuran Kebimbangan
OSIV mengaburkan pemisahan antara perkhidmatan dan lapisan UI, kerana pernyataan dijana oleh kedua-duanya. Ini merumitkan ujian dan menjadikannya lebih sukar untuk mengasingkan lapisan.
3. Isu Prestasi Pertanyaan N 1
OSIV mengehadkan lapisan UI untuk menavigasi persatuan, yang boleh mengakibatkan masalah pertanyaan N 1. Walaupun Hibernate menyediakan mitigasi seperti @BatchSize dan FetchMode.SUBSELECT, ia menjejaskan pelan pengambilan lalai dan mungkin tidak optimum untuk semua senario.
4. Pengurusan Sumber
OSIV memastikan sambungan pangkalan data dibuka sepanjang fasa pemaparan UI. Pajakan sambungan lanjutan ini boleh mewujudkan kesesakan dalam kumpulan sambungan, mengehadkan kebolehskalaan dan daya pemprosesan.
Alternatif kepada OSIV
Untuk mengelakkan LazyLoadExceptions semasa menangani had OSIV, pertimbangkan perkara ini strategi alternatif:
- Bersemangat Mengambil: Mulakan semua perkaitan yang diperlukan dengan penuh semangat dalam lapisan perkhidmatan untuk mengelakkan ralat memuatkan malas.
- FetchMode.JOIN: Gunakan FetchMode.JOIN dalam pertanyaan untuk memuatkan perkaitan tertentu dengan bersemangat.
- Pengambilan Kelompok: Gunakan @BatchSize untuk mendapatkan semula persatuan dalam kelompok dan meningkatkan prestasi.
- Unjuran DTO: Cipta DTO (Objek Pemindahan Data) yang merangkum data yang berkaitan tanpa memasukkan persatuan yang malas.
Melumpuhkan OSIV dalam But Spring
Pada Musim Bunga Boot, OSIV didayakan secara lalai. Untuk melumpuhkannya, tambahkan sifat berikut pada fail konfigurasi application.properties anda:
spring.jpa.open-in-view=false
Dengan melumpuhkan OSIV, anda boleh mengawal pengambilan data dengan lebih baik, memastikan integriti transaksi dan meningkatkan prestasi aplikasi.
Atas ialah kandungan terperinci Patutkah Anda Menggunakan Sesi Terbuka Hibernate dalam Corak Pandangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...
