상속 매핑 선택 기준

공통 속성을 어디에 두고, 전체를 읽을 때 무엇을 감수할지로 고른다

세 전략은 모두 상속 구조를 저장하지만, NULL, 조인, 중복 중 무엇을 비용으로 받아들일지가 다릅니다.

이 절의 기준점: 타입별 조회전체 조회 중 무엇이 더 잦은가
단일 테이블 기본 전략

한 테이블에 모든 타입을 넣고 구분 컬럼으로 필터링

타입별 테이블 JPA JOINED

공통은 부모에, 전용은 자식에 두고 조회 시 결합

구체 테이블 TABLE_PER_CLASS

각 구체 타입이 공통 속성까지 모두 직접 저장

공통 속성 저장 한 곳에만 저장

중복은 없지만 타입별 미사용 컬럼이 함께 놓입니다.

부모 테이블에 모음

정규화가 잘 되고, 공통 속성은 계속 한 곳에서 관리됩니다.

각 자식 테이블에 반복

조인은 줄지만 공통 컬럼 변경 시 여러 테이블을 함께 손봐야 합니다.

타입별 조회 WHERE로 구분

한 테이블만 읽으면 되지만 NULL 컬럼이 많이 따라옵니다.

자식 + 부모 조인

타입별 속성이 많아도 구조는 깔끔하지만 조회 시 결합이 필요합니다.

각 구체 테이블만 읽음

학생이면 학생 테이블만 읽으면 끝이라 가장 직접적입니다.

전체 조회 가장 단순

한 번의 스캔으로 전체 상속 계층을 읽을 수 있습니다.

조인 비용 발생

부모와 자식을 합쳐야 해서 앞 절의 단점이 여기서 드러납니다.

UNION 필요

각 타입 결과를 모아야 하므로 전체 집계나 목록 조회가 번거롭습니다.

잘 맞는 경우 타입이 단순하고 전체 조회가 잦을 때

구조보다 조회 단순성이 더 중요하면 유리합니다.

공통 속성도 많고 타입별 속성도 많을 때

중복 없이 모델을 유지하면서도 타입별 확장을 분리할 수 있습니다.

공통보다 독립 조회가 더 중요할 때

타입 간 공통점이 적고, 각 타입을 따로 다루는 경우에 어울립니다.

한 줄 기준: 전체를 자주 같이 읽으면 단일 테이블이 단순하고, 공통 구조를 정리하고 싶으면 타입별 테이블이 안정적입니다.
구체 테이블 전략: 타입별 조회는 쉽지만 공통 정보가 반복되고 전체 조회는 UNION으로 다시 합쳐야 합니다.