- setter가 모두 열려있으면 변경 포인트가 많아서 유지보수 어려움
- 즉시로딩(EAGER)은 예측이 어렵고 어떤 SQL이 실행될지 모름. 생각보다 많은 SQL이 발생해 성능 문제 발생(N+1 발생)
- 실무에서는 지연로딩(LAZY)으로 설정(xxToOne 은 기본이 EAGER)
- 연관관계 entity를 함께 조회하고 싶다면 fetch join, 엔티티 그래프 기능 사용
- 컬렉션은 필드에서 바로 초기화 하는 것이 안전하다.
- null 문제에서 안전
- 엔티티(필드) -> 테이블(컬럼)
(설정에서 변경할 수 있음, 특정 로직으로도 변경 가능)
1. 카멜 케이스 -> 언더스코어(memberId -> member_id)
2. .(점) -> (언더바)
3. 대문자 -> 소문자
- controller에서 entity를 반환하지 말자(JSON 생성 라이브러리), entity를 변경하는 순간 API스펙이 바뀐다.
DTO로 변환해서 반환- toString(), lombok NO
- JPA 모델링 시 단방향 매핑으로 끝내야함. 양방향 NO!
참조 : 김영한님 JPA 강의