엔티티 설계시 주의점
1. 가급적 Setter 사용하지 않기
- 변경 포인트가 너무 많아서, 유지보수가 어렵다.
2. 모든 연관관계는 지연로딩으로 설정
- 즉시로딩은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다
- 실무에서 모든 연관관계는 지연로딩(LAZY)로 설정해야 한다.
- 연관된 엔티티를 함께 DB에서 조회해야 하면, fetch join또는 엔티티 그래프 기능을 사용한다.
- @XToOne(OneToOne, ManyToOne)관계는 기본이 즉시로딩이므로 직접 지연로딩을 설정해야 한다.
3. 컬렉션은 필드에서 초기화 하자
- 컬렉션은 필드에서 바로 초기화 하는 것이 안전하므로 필드에서 초기화 하는 것이 좋다.
- null문제에서 안전하고 코드도 간결해진다.