Skip to content

M08 · Bab 6± 50 menitDraf AI

N+1 dan Performa Query

Tujuan belajar

  • Mengenali masalah N+1 dan mendeteksinya lewat log SQL serta Hibernate statistics
  • Memperbaiki N+1 dengan JOIN FETCH, @EntityGraph, dan batch fetching
  • Memakai projection DTO untuk endpoint read-only
  • Membaca EXPLAIN ANALYZE dan menambah index lewat migrasi Flyway
  • Menjelaskan kenapa spring.jpa.open-in-view dimatikan dan menghindari jebakan pagination dengan fetch join

Prasyarat: Migrasi Skema dengan Flyway

Kuis

5 soal · lulus bila minimal 70% benar

1.Endpoint GET /orders mengambil 50 pesanan dengan findAll(), lalu untuk tiap pesanan memanggil order.getCustomer().getFullName() (relasi LAZY, 50 customer berbeda). Berapa query SQL yang dijalankan?
2.Query select o from Order o join fetch o.items dipanggil dengan Pageable berukuran 20. Log menampilkan peringatan HHH90003004 tentang _firstResult/maxResults_ dan collection fetch. Apa artinya?
3.Setelah spring.jpa.open-in-view=false, controller yang mengembalikan entity Order langsung mulai gagal dengan LazyInitializationException saat JSON dibuat. Perbaikan yang paling tepat?
4.Halaman "riwayat pesanan" hanya menampilkan nomor pesanan, nama customer, dan total, tanpa pernah mengubah data. Pendekatan mana yang paling efisien?
5.EXPLAIN ANALYZE untuk SELECT ... FROM orders WHERE customer_id = 4242 menampilkan Parallel Seq Scan on orders dengan Rows Removed by Filter: 149985. Langkah perbaikan yang paling masuk akal?

Jawab semua soal dulu (0/5)