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.
Hatalı
Bölüm başlığı “Hatalı”@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=falseDüzeltme
Bölüm başlığı “Düzeltme”open-in-view’i kapatın; lazy veriyi servis/transaction katmanında yükleyip DTO döndürün.