Entity 설계 시 주의점

tyghu77·2023년 7월 6일
0
post-custom-banner
  1. Entity에는 가급적 Setter를 사용하지 말자

  2. 모든 연관관계는 지연로딩으로 설정👀👀
    즉시 로딩은 예측이 어렵고 어떤 SQL이 실행될지 추적하기 어렵다. JPQL을 실행할 때 N+1문제가 자주 발생한다.
    EAGER(즉시 로딩)으로 되어있으면, 조회할 경우 연관된 데이터를 다 끌고 온다.
    연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용해아 한다.
    @...ToOne(OneToOne, ManyToOne)관계는 기본이 즉시 로딩이므로 지연로딩으로 바꿔줘야 한다.

  3. 컬렉션은 필드에서 초기화를 하자
    null 문제에서 안전하다.
    하이버네이트는 엔티티를 영속화 할 때, 컬렉션을 감싸서 하이버네이트가 제공하는 내장 컬렉션으로 변경한다. 컬렉션을 꺼내서 변경하게 되는 경우 하이버네이트의 메커니즘 대로 동작하지 않을 수 있다. 따라서 컬렉션을 변경하지 않는 것이 좋다.

  4. 테이블, 컬럼명 생성 전략
    하이버네이트 기존 구현: 엔티티의 필드명을 그대로 테이블 명으로 사용(SpringPhysicalNamingStrategy)
    스프링 부트 신규 설정(엔티티(필드) > 테이블(컬럼))
    1. 카멜 케이스 > 언더스코어(orderDate > order_date)
    2. .(점) > (언더스코어)
    3. 대문자 > 소문자

profile
배운것을 기록하자
post-custom-banner

0개의 댓글