Rumah > Java > javaTutorial > Bagaimana untuk Menyelesaikan Masalah N 1 dalam JPA dan Hibernate?

Bagaimana untuk Menyelesaikan Masalah N 1 dalam JPA dan Hibernate?

Mary-Kate Olsen
Lepaskan: 2024-11-14 18:54:02
asal
763 orang telah melayarinya

How to Solve the N 1 Problem in JPA and 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();
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan