엔티티 설계 주의점

강한친구·2022년 6월 28일
0

JPA

목록 보기
3/27

Setter를 사용하지 말자

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

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

즉시로딩 (EAGER)

연관관계를 로딩할 때, 연결된 모든 연관데이터를 전부 다 불러오는 기능이다. 따라서 어떤 SQL이 실행될지 추적하기 어렵다

따라서 모든 연관관계는 지연로딩( LAZY )으로 설정해야 한다.

연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다.

@XToOne(OneToOne, ManyToOne) 관계는 기본이 즉시로딩이다. 따라서 직접 지연로딩으로 설정해야 한다.

컬렉션은 필드에서 초기화

컬렉션이 자주 바뀌면 hibernate가 잘 잡지 못할 수도 있다. 따라서 가능하면 바꾸지 말자.

이름짓기 공략

하이버네이트 기존 구현

엔티티의 필드명을 그대로 테이블의 컬럼명으로 사용
( SpringPhysicalNamingStrategy )

스프링 부트 신규 설정 (엔티티(필드) 테이블(컬럼))

  1. 카멜 케이스 언더스코어(memberPoint member_point)
  2. .(점) _(언더스코어)
  3. 대문자 소문자

0개의 댓글