[SpringBoot JPA 활용 웹 애플리케이션 개발 : Entity 설계시 주의점]

Han Gyul Kang·2022년 4월 10일
0

Inflern_Spring_JPA

목록 보기
3/12

1. 엔티티에는 가급적 Setter를 사용하지 말자

  • Setter가 모두 열려있으면 변경 포인트가 너무 많아서 유지보수가 어렵다.

2. 모든 연관관계는 지연로딩으로 설정

  • EAGER(즉시로딩)은 예측이 어렵고 어떤 SQL이 실행될지 추적하기 어렵다.
    특히 JPQL을 실행할 때 N + 1문제가 자주 발생한다.
    - EAGER의 경우 Join이 걸려있는 table의 데이터를 반드시 함께 가져온다.
    - 반드시 함께 가져와야한다면 fetch join 또는 엔티티 그래프 기능을 사용한다.

  • 실무에서 모든 연관관계는 LAZY(지연로딩)로 설정해야한다.
    - ManyToOne, OneToOne은 기본이 EAGER
    - OneToMany는 기본이 LAZY

* 그렇기 때문에 XToOne의 경우 모두 FetchType을 Lazy로 변경해줘야 한다.


3. 컬렉션은 필드에서 초기화 하자

  • 컬렉션은 필드에서 초기화하고 컬렉션을 절대 변경하지 않아야 한다.

4. 테이블, 컬럼명 생성 전략

  • SpringBoot를 사용한다면 기본적으로 등록된 SpringPhysicalNamingStrategy 작동한다.
    CamelCase를 모두 소문자 + 언더스코어로 변경해준다.

profile
피아노 치는 개발자

0개의 댓글

관련 채용 정보