Masalah Pertanyaan N 1
The Isu pertanyaan N 1 timbul apabila pertanyaan mendapatkan semula N rekod dan pertanyaan seterusnya diperlukan untuk mengambil entiti berkaitan, mengakibatkan pertanyaan N 1.
Cara Menyelesaikan Isu N 1 dalam Hibernate
Untuk menyelesaikan isu ini, adalah penting untuk membolehkan pengelogan SQL yang betul untuk mengesan masalah .
Menggunakan JOIN FETCH
The penyelesaian utama ialah menggunakan JOIN FETCH Hibernate untuk memuatkan entiti yang berkaitan dengan penuh semangat dalam pertanyaan awal. Ini boleh dicapai dengan mengubah suai pertanyaan seperti berikut:
List<PostComment> comments = entityManager.createQuery( "select pc from PostComment pc join fetch pc.post p where pc.review = :review", PostComment.class) .setParameter("review", review) .getResultList();
Pertimbangan Tambahan
Jika berbilang persatuan kanak-kanak perlu diambil, pertimbangkan untuk mengambil satu koleksi pada permulaan pertanyaan dan koleksi tambahan dengan pertanyaan berasingan.
Pengesanan Automatik dengan JUnit
Ujian integrasi boleh digunakan untuk mengesan isu pertanyaan N 1 secara automatik. Menggunakan rangka kerja seperti db-util boleh membantu dalam mengesahkan kiraan jangkaan penyata SQL yang dijana.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah Pertanyaan N 1 dalam JPA dan Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!