인프런 커뮤니티 질문&답변

tjddnjs2598님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

회원 상속전략

24.06.19 21:18 작성

·

71

0

안녕하세요 일정 부분을 공유하는 회원 엔티티를 설계할 때의 상속전략 vs 분리가 궁금합니다.
민원인, 직원 이렇게 2종류가 있고 아이디, 비밀번호, 사번 등이 동일하고 직원은 여기서 몇개만 추가된다고 가정한다면

엔티티를 따로 분리하는게 아닌 공통속성 엔티티를 상속해서 만들어도 괜찮을까요?

몇일을 고민해도 답이 쉽게 나오지 않네요ㅜㅜ

 

 

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 19. 21:21

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용은 회원 엔티티 설계 시 공통 속성을 가지고 있는 경우 어떤 상속 전략을 적용할지에 대한 고민으로 보입니다. JPA에서 제공하는 상속 전란 방식 중 하나를 선택하여 구현할 수 있으며, 주로 @Inheritance 어노테이션을 사용하여 상속 전략을 지정합니다.

다음은 JPA에서 제공하는 세 가지 주요 상속 전략입니다:

  • 단일 테이블 전략(SINGLE_TABLE): 모든 엔티티를 한 테이블에 저장합니다. 구분 컬럼(DTYPE)을 사용하여 엔티티 타입을 구분합니다.
  • 조인 전략(JOINED): 각 엔티티를 별도의 테이블로 분리하고, 상속 구조에 있을 때만 조인을 사용하여 조회합니다.
  • 구현 클래스마다 테이블 전략(TABLE_PER_CLASS): 각 하위 클래스마다 별도의 테이블을 생성합니다. 이 전략은 복잡도가 증가할 수 있으므로 주의가 필요합니다.

회원 엔티티의 경우 예시로 든 ‘민원인’과 ‘직원’ 사이에 공통 속성이 많다면 상속을 사용하는 방안을 고려할 수 있습니다. 이때, 공통 속성을 가진 기본 엔티티(부모)를 생성하고, 추가 속성을 가지는 부분만을 각각의 하위 클래스(자식)로 구현할 수 있습니다.

단, 어떤 전략을 사용할지 결정할 때는 각 방식의 장단점을 고려해야 합니다. 예를 들어, 단일 테이블 전략은 조인이 필요 없어 성능상 이점이 있지만, 테이블에 불필요한 NULL 컬럼이 많아질 수 있습니다. 반면, 조인 전략은 테이블 구조가 명확하지만, 복잡한 조인이 성능에 영향을 줄 수 있습니다.

관련하여 추천드릴 만한 질문과 답변 링크는 다음과 같습니다:

각 상속 전략의 선택은 설곌 요구사항, 성능 고려사항, 데이터 구조의 복잡성 등 여러 요소를 고려하여 결정해야 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.