패스잇
백엔드 개발 · 심화

JPA에서 상속 관계 매핑 전략(SINGLE_TABLE, JOINED, TABLE_PER_CLASS)의 차이점과 선택 기준은?

힌트 · 쿼리 성능, 정규화 수준, NULL 허용 여부를 비교해보세요.

단일 테이블 전략조인 전략구현 클래스마다 테이블 전략정규화성능

모범답안

JPA 상속 관계 매핑 전략은 크게 세 가지가 있습니다.

  • SINGLE_TABLE 전략: 하나의 테이블에 모든 엔티티를 저장합니다. 구현이 간단하지만, 자식 엔티티에만 존재하는 컬럼은 NULL 값을 허용해야 하고, 조회 성능은 대체로 빠릅니다.

  • JOINED 전략: 부모 엔티티와 자식 엔티티 각각 테이블을 만들고, 조인을 통해 데이터를 가져옵니다. 정규화 수준이 높지만, 조인 연산 때문에 성능이 저하될 수 있습니다.

  • TABLE_PER_CLASS 전략: 각 자식 엔티티마다 테이블을 생성합니다. NULL 컬럼 문제는 없지만, 부모 엔티티를 조회할 때 모든 자식 테이블을 UNION 해야 하므로 성능이 매우 떨어질 수 있습니다.

선택 기준은 다음과 같습니다. 데이터가 자주 변경되고 조회 성능이 중요하다면 SINGLE_TABLE, 정규화가 중요하고 데이터가 자주 변경되지 않는다면 JOINED, 특별한 경우가 아니라면 TABLE_PER_CLASS는 지양하는 것이 좋습니다. 상황에 따라 적절한 전략을 선택해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JPA / ORM 면접 질문

← JPA / ORM 면접 질문 전체 보기