İçeriğe geç

Open Session In View (ARCH4067)

Anahtar java.orm.open-session-in-view · Önem warning · Kategori orm

Lazy ilişkileri view/serileştirme katmanında dereference etmek (Open Session in View) DB session’ını açık tutar ve gizli N+1 üretir. Veriyi servis katmanında, transaction içinde yükleyin.

@GetMapping("/orders")
public List<Order> list() {
return orderRepository.findAll(); // items lazy -> JSON serileştirmede yüklenir
}
// spring.jpa.open-in-view=true
@GetMapping("/orders")
public List<OrderDto> list() {
return orderService.findAllWithItems(); // transaction içinde fetch + DTO
}
// spring.jpa.open-in-view=false

open-in-view’i kapatın; lazy veriyi servis/transaction katmanında yükleyip DTO döndürün.