Spring

엔티티 설계 주의점

JUNGKEUNG 2021. 11. 21. 19:51

연관관계 매핑 분석


  • 1:N, N:1 양방향 관계에서는 외래키가 있는엔티티를 주인으로 정하는것이 좋다.
  • 연관관계의 주인쪽의 값을 세팅해야 값이 변경된다.
  • 1:N에서 일 부분에 있는 mappedBy는 단순히 읽기만 하는 역할(단순 조회용)이며, 연관관계의 주인쪽에 세팅을 해야 값이 변경된다.
  • 외래키가 가까운 곳에 있는 것을 연관관계의 주인으로 정하는 것이 좋다.
  • N:N 돤계에서는 @ManyToMany 사용은 권장되지 않고 1:N + N:1로 풀어내는 것을 권장한다.

 

 

 

엔티티 설계시 주의점


  • Entity에서는 가급적 Setter를 사용하지 말자. 변경포인트가 많아서 유지보수가 어렵다.
  • 모든 연관관계는 지연로딩으로(lazy loading) 설정한다.
    • 즉시로딩(Eager)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할 때 N+1 문제가 자주 발생한다.
    • 연관된 에터티를 함께 DB에서 조회해야 하면, fetch join 또는 엔터티 그래프 기능을 사용한다.
    • @XToOne(OneToOne, ManyToOne) 관계는 기본이 EAGER(즉시로딩)이므로 지연로딩으로 설정해야 한다.
    • 연관관계에서 Lazy Loading 하지 않으면, N+1 문제가 발생 할 수 있다.

 

 

 

참고 자료


https://wooody92.github.io/

'Spring' 카테고리의 다른 글

Spring 과 Spring boot  (0) 2022.06.01
JpaReporitory vs EntityManager  (0) 2021.11.23
Maven vs Gradle  (0) 2021.11.05
Spring 이란?  (0) 2021.07.14
Spring boot S3 업로드, 수정, 삭제  (0) 2021.06.18