엔티티에는 가급적 Setter를 사용하지 말자
- Setter가 모두 열려 있고 변경포인트가 많아서 유지 보수가 어렵다.
모든 연관관계는 지연로딩으로 설정
- 즉시로딩은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다. 특히 JPQL을 실행할때 N+1 문제가 자주 발생한다.
- 실무에서는 모든 연관관계는 지연로딩(LAZY)으로 설정해야한다,
- 연관된 엔티티를 함께 DB에 조회해야 하면, fetch join 또는 엔티티 그래프 기능을 사용한다,
- @XTOOne(OneToOne, ManyToOne)관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야한다,
컬렉션을 필드에서 초기화 하자
- 컬렉션은 필드에서 바로 초기화 하는 것이 안전하다.
- null 문제에서 안전하다.
- 하이버네이트는 엔티티를 영속화 할 때, 컬랙션을 감싸서 하이버네이트가 제공하는 내장 컬렉션으로 변경한다. 만약 getOrders() 처럼 임의의 메서드에서 컬력션을 잘못 생성하면 하이버네이트 내부 메커니즘에 문제가 발생할 수 있다. 따라서 필드레벨에서 생성하는 것이 가장 안전하고, 코드도 간결하다
'취업 준비 > 실전 JPA' 카테고리의 다른 글
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 셋팅 (0) | 2023.05.08 |
---|---|
JPA 프로그래밍 - 기본편(중요한것) (0) | 2023.05.07 |
4/29~5/5일까지 목표 (0) | 2023.04.29 |
4/17 ~4/23 취준 준비 (0) | 2023.04.17 |
4/14 jpa 강의 (0) | 2023.04.14 |