Open remagine opened 5 years ago
RDB에서는 상속이라는 개념이 없지만, 슈퍼서브 타입관계가 가장 유사한 구조를 가진다. 슈퍼서브 타입 논리모델을 물리 테이블에서 구현하는 전략은 3가지가 있다.
객체 부모클래스 ITEM을 자식클래스에서 상속받은 후 맵핑전략, 부모 테이블의 있는 구분 컬럼, 자식 테이블 구분 컬럼값을 어노테이션으로 알려준다
맵핑전략 - @Inheritance > 어떤 전략을 사용할지, 조인전략은 inheritanceType.JOINED 구분컬럼 - @DiscriminatorColumn > 자식 클래스를 구별할 컬럼을 지정. 기본값은 DTYPE 구분컬럼값 - @DiscirimnatorValue > 엔티티 저장시 구분 컬럼에 입력할 값 지정.
기본키컬럼명 지정 - @PrimaryKeyJoinColumn > 자식 엔티티의 id 명을 지정하고 싶을 때 사용
장점
단점
_JPA 표준 명세_는 구분 컬럼을 사용하도록 하지만 하이버네이트 및 일부 구현체는 구분 컬럼 없이도 동작
하나의 테이블 = 부모,자식 클래스
위의 조인 전략의 정규화된 테이블을 역정규화하여 하나로 합친 형태로 구분컬럼 DTYPE으로 ENTITY를 구분한다. 필수
맵핑전략 명시 - @Inheritance(strategy - InheritanceType.SINGLE_TABLE)
특징
자식 엔티티마다 테이블을 만들고, 자식 테이블마다 각자 필요 컬럼을 가지고 있다. 즉 부모테이블 없이 자식 테이블이 부모엔티티의 PK와 공통필드까지 컬럼으로 가지고 있다.
맵핑전략 명시 - @Inheritance(strategy - InheritanceType.TABLE_PER_CLASS)
7장 고급 맵핑
상속관계맵핑
RDB에서는 상속이라는 개념이 없지만, 슈퍼서브 타입관계가 가장 유사한 구조를 가진다. 슈퍼서브 타입 논리모델을 물리 테이블에서 구현하는 전략은 3가지가 있다.
객체 부모클래스 ITEM을 자식클래스에서 상속받은 후 맵핑전략, 부모 테이블의 있는 구분 컬럼, 자식 테이블 구분 컬럼값을 어노테이션으로 알려준다
맵핑전략 - @Inheritance > 어떤 전략을 사용할지, 조인전략은 inheritanceType.JOINED 구분컬럼 - @DiscriminatorColumn > 자식 클래스를 구별할 컬럼을 지정. 기본값은 DTYPE 구분컬럼값 - @DiscirimnatorValue > 엔티티 저장시 구분 컬럼에 입력할 값 지정.
기본키컬럼명 지정 - @PrimaryKeyJoinColumn > 자식 엔티티의 id 명을 지정하고 싶을 때 사용
장점
단점
_JPA 표준 명세_는 구분 컬럼을 사용하도록 하지만 하이버네이트 및 일부 구현체는 구분 컬럼 없이도 동작
하나의 테이블 = 부모,자식 클래스
위의 조인 전략의 정규화된 테이블을 역정규화하여 하나로 합친 형태로 구분컬럼 DTYPE으로 ENTITY를 구분한다. 필수
맵핑전략 명시 - @Inheritance(strategy - InheritanceType.SINGLE_TABLE)
장점
단점
특징
자식 엔티티마다 테이블을 만들고, 자식 테이블마다 각자 필요 컬럼을 가지고 있다. 즉 부모테이블 없이 자식 테이블이 부모엔티티의 PK와 공통필드까지 컬럼으로 가지고 있다.
맵핑전략 명시 - @Inheritance(strategy - InheritanceType.TABLE_PER_CLASS)
장점
단점
특징