2021. 3. 1. 20:24ㆍ프로그래밍 언어/Spring Framework
[인프런 김영한] JPA - Entity 설계시 주의점
해당 글은 인프런 김영한강사님의 영상을 보고 정리한 글입니다.
김영한 인프런 : www.inflearn.com/users/@yh
인프런 - 김영한의 강의들을 만나보세요.
우아한형제들 개발 팀장 (전: 카카오, SK플래닛) 저서: 자바 ORM 표준 JPA 프로그래밍
www.inflearn.com
▣ Entity 설계시 주의점
1. Entity에는 가급적 Setter를 사용하지 말자!
- 변경 포인트가 너무 많아서 유지보수가 힘들다.
2. 모든 연관관계는 지연로딩으로 설계
- EAGER은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 힘들다. 그리고 JPQL을 실행할 때 N+1 문제가 자주 발생.
- 실무에서는 모든 연관관계는 LAZY로 설정하기
- 연관된 Entity를 함께 DB에서 조회해야 하면, FETCH JOIN 또는 Entity 그래크 기능을 사용
- @*ToOne(OneToOne, ManyToOne)은 LAZY로 변경
3. 컬렉션(List, Set 등등)을 필드에서 초기화 하자
- 컬렉션은 필드에서 바로 초기화 하는것이 null문제에서 안전하다.
- 하이버네이트는 Entity를 영속화 할 때, 컬렉션을 감싸서 하이버네이트가 제공하는 내장 컬렉션으로 변경한다.
4. 테이블, 컬럼명 생성 전략
- 스프링 부트에서 하이버네이트 기본 매핑 전략을 변경해서 실제 테이블 필드명이 다르다.
( orderDate(객체) -> order_date(DB 컬럼) )
'프로그래밍 언어 > Spring Framework' 카테고리의 다른 글
[인프런 김영한] JPA - 준영속 Entity, 수정방법 및 주의사항 (0) | 2021.03.07 |
---|---|
[인프런 김영한] JPA - JPA? ORM? (0) | 2021.02.28 |
[인프런 김영한] JPA - 페치 조인(fetch join), 컬렉션 페치조인 (0) | 2021.02.27 |
[인프런 김영한] JPA - 경로표현식 (0) | 2021.02.23 |
[인프런 김영한] JPA - 조인 (0) | 2021.02.16 |