Skip to content

M08 · Bab 4± 55 menitDraf AI

Transaksi dengan @Transactional

Tujuan belajar

  • Menempatkan @Transactional di service agar satu use case berjalan all-or-nothing
  • Menjelaskan cara kerja proxy dan menghindari jebakan self-invocation
  • Memilih readOnly, propagation (REQUIRED, REQUIRES_NEW), dan isolation yang tepat
  • Menerapkan rollback rules — termasuk kenapa checked exception tidak memicu rollback secara default
  • Mencegah lost update dengan optimistic locking @Version dan memetakannya ke 409 Conflict

Prasyarat: Spring Data Repository

Kuis

5 soal · lulus bila minimal 70% benar

1.Method @Transactional public void checkout(...) throws PaymentDeclinedException sudah menyimpan pesanan, lalu melempar PaymentDeclinedException (turunan Exception, bukan RuntimeException). Apa yang terjadi pada pesanan itu?
2.Di class OrderService, method placeOrder() (tanpa anotasi) memanggil this.saveOrder() yang diberi @Transactional. Saat placeOrder() dipanggil dari controller, apa yang terjadi?
3.Dua admin membuka produk yang sama (versi 3). Admin A menyimpan perubahan harga, lalu Admin B menyimpan perubahan stok. Entity punya field @Version. Apa hasilnya?
4.Saat lonjakan trafik, log penuh dengan timeout mendapatkan koneksi dari HikariCP. Method @Transactional checkout() memanggil payment gateway via HTTP (rata-rata 3 detik) di tengah transaksi. Perbaikan paling tepat?
5.Method luar @Transactional memanggil method lain (bean berbeda, propagation REQUIRED) yang melempar RuntimeException. Method luar menangkap exception itu dengan try/catch lalu selesai normal. Apa yang terjadi saat commit?

Jawab semua soal dulu (0/5)