JPA 설계 주의

test·2021년 11월 11일
0

JPA

목록 보기
2/5
post-thumbnail

JPA 설계 시 주의점

1. Entity 가급적 Setter를 사용하지 말자

  • setter가 모두 열려있으면 변경 포인트가 많아서 유지보수 어려움

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

  • 즉시로딩(EAGER)은 예측이 어렵고 어떤 SQL이 실행될지 모름. 생각보다 많은 SQL이 발생해 성능 문제 발생(N+1 발생)
  • 실무에서는 지연로딩(LAZY)으로 설정(xxToOne 은 기본이 EAGER)
  • 연관관계 entity를 함께 조회하고 싶다면 fetch join, 엔티티 그래프 기능 사용

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

  • 컬렉션은 필드에서 바로 초기화 하는 것이 안전하다.
  • null 문제에서 안전

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

  • 엔티티(필드) -> 테이블(컬럼)
    (설정에서 변경할 수 있음, 특정 로직으로도 변경 가능)
    1. 카멜 케이스 -> 언더스코어(memberId -> member_id)
    2. .(점) -> (언더바)
    3. 대문자 -> 소문자

5. 무한루프 조심

  • controller에서 entity를 반환하지 말자(JSON 생성 라이브러리), entity를 변경하는 순간 API스펙이 바뀐다.
    DTO로 변환해서 반환
  • toString(), lombok NO
  • JPA 모델링 시 단방향 매핑으로 끝내야함. 양방향 NO!

참조 : 김영한님 JPA 강의

profile
bedev

0개의 댓글