1. 조인 전략
- 장점
- 테이블이 정규화되어 있음
- 외래키 참조 무결성 제약조건 활용 가능
- 저장공간 효율화
- 단점
- 조회시 조인 많이 사용(성능 저하 가능성), 쿼리 복잡도 증가
- 저장시 insert 쿼리 2번 호출
📌기본적으로 실무에서 정석으로 사용되는 전략(객체와 가장 잘 맞고 깔끔한 설계)
2. 단일 테이블 전략
- 장점
- 조회 성능이 빠름(조인이 필요 없으므로)
- 단순한 조회 쿼리
- 단점
- 자식 엔티티가 맵핑한 컬럼은 모두 null 허용
- 하나의 테이블에 모든 것을 저장하므로 테이블이 커질 수 있어 오히려 조회 성능 저하될 수 있음
3. 구현 클래스마다 테이블 전략
- 장점
- 서브 타입을 명확히 구분해서 처리할 때 효과적
- not null 제약조건 사용 가능
- 단점
- 여러 자식 테이블을 함께 조회할 때 성능 느림(모든 테이블을 union)
- 자식 테이블을 통합해서 쿼리하기 어려움
📌실무에서는 사용을 지양해야하는 전략(ORM 전문가, DB 설계자 모두)
📌 전략사용 관련 실무에서의 적용 팁
- 기본적으로 조인전략을 채택
- 만약 비즈니스적으로 중요도나 복잡도가 상대적으로 낮을 경우에는 단일 테이블 전략 채택