Rumah >Java >javaTutorial >Bagaimana untuk Menyelesaikan Masalah N 1 dalam JPA dan Hibernate?
Menangani Masalah N 1 dalam JPA dan Hibernate
Isu N 1 timbul apabila pertanyaan yang berlebihan dilaksanakan untuk mendapatkan data hubungan. Sebagai contoh, dalam Hibernate, pertanyaan awal mengambil N rekod dan N pertanyaan tambahan diperlukan untuk mendapatkan semula rekod yang berkaitan bagi setiap satu.
Untuk menyelesaikan masalah ini, gunakan JOIN FETCH:
List<PostComment> comments = entityManager.createQuery( "select pc from PostComment pc join fetch pc.post p where pc.review = :review" ) .setParameter("review", review) .getResultList();
JOIN FETCH ini akan mengambil persatuan siaran, menghapuskan pertanyaan N 1.
Jika berbilang persatuan kanak-kanak perlu mengambil, mengambil satu koleksi dalam pertanyaan awal dan yang lain dengan pertanyaan berikutnya.
Pengesanan Automatik
Ujian integrasi sesuai untuk mengesan isu N 1. Projek db-util menyediakan penegasan JUnit automatik untuk mengesahkan kiraan jangkaan pernyataan SQL yang dijana:
@Test public void shouldNotHaveANPlusOneQuery() { // code to configure and execute db-util Assert.assertCountOfSqlStatementsPerformed(1); }
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Masalah N 1 dalam JPA dan Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!