본문 바로가기
728x90

JPA2

Setter없이 Entity update 값의 변화점을 예측하기 힘들어지게하는 Setter는 지양해야 한다. 이후 Setter에 의한 문제가 발생할 여지를 남겨두는 것은 좋지 않기 때문이다. 물론 '무조건' 쓰지 말아야 하는 것은 아니다. 단순히 필드 하나만 변경하는 경우라면 setter를 써도 된다. 그럼 Setter없이 어떻게 Entity를 update 할 수 있을까? update가 필요한 값만을 받는 메서드를 따로 생성해 그것을 명시적으로 사용하면 된다. @RestController ... @PostMapping("/update/{id}") public void updateCategory(@PathVariable("id") Long id, @RequestBody CategoryDto categoryDto) { categoryService... 2022. 10. 9.
[JPA] 엔티티 설계 시 주의점 (setter 지양, 즉시로딩 지양) (1) 엔티티에는 가급적 Setter 지양 변경 포인트가 너무 많아서 유지보수가 어렵다.. (2) 지연로딩 지향, 즉시로딩 지양 모든 연관관계는 지연로딩으로 설정! 즉시로딩(EAGER)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제(의미상 1+N)가 자주 발생한다. 실무에서 모든 연관관계는 지연로딩(LAZY)으로 설정해야 한다. 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다. 주의할 점으로, @XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩 이므로 직접 지연로딩으로 설정해야 한다. (3) 컬렉션은 필드에서 초기화 하자. 컬렉션은 필드에서 바로 초기화 하는 것이 null 문제.. 2022. 9. 26.
728x90