본문 바로가기

DiscriminatorValue3

JPA - 객체지향 쿼리 언어 - JPQL 다형성 쿼리 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 다형성 쿼리 앞에서 JPA 상속관계 맵핑을 배운적이 있다. Item 엔티티를 확장하여 Book, Album, Movie 엔티티를 선언하였다. Single Table 전략으로 선언했던 Item 과 Book 엔티티의 코드를 다시 한번 살펴보자. @Entity @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "ITEM_TYPE") public abstract class Item extends DateMarkable { @Id @GeneratedValue @Column(name = "ITEM_ID") private Long id; private String name.. 2021. 8. 3.
JPA - 고급맵핑 - 요구사항 분석과 맵핑3 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 실전 예제 아래와 같은 요구사항이 추가되었다고 가정하자. 상품의 종류는 음반, 도서, 영화가 있고 이후 확장가능하다. 모든 데이터는 등록일과 수정일이 있다. 상품의 종류에 음반, 도서, 영화가 있다는것에 대한 요구사항을 UML 로 표현하면 아래와 같다. Album, Book, Movie 객체는 Item 객체를 상속받는다. JPA 로 이러한 상속관계를 맵핑할 떄에는 @Inheritance 어노테이션을 사용한다. 실전이라면 맵핑 전략을 신중하게 고르겠지만 예제이기 때문에 간단하게 SINGLE_TABLE 전략을 이용해보자. 2 번째 요구사항인 모든 엔티티에 등록일과 수정일 컬럼을 추가할 때에는 컬럼을 모두 추가해주지 말고 맵핑 관계만 상속받는 @MappedSu.. 2021. 7. 13.
JPA - 고급맵핑 - 슈퍼타입과 서브타입 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 상속 관계 맵핑 관계형 DB(RDB) 는 상속이라는 개념이 없다. 대신 슈퍼타입과 서브타입이라는 유사한 기법이 존재한다. 그래서 ORM 의 상속관계맵핑이라고 하면 객체의 상속과 슈퍼타입 서브타입의 관계를 맵핑하는것을 말한다. 맵핑방법은 아래와 같이 3 가지 방법이 있다. 각각의 테이블 변환: 공통된 속성을 부모 테이블로 두고 달라지는속성을 모두 하위 테이블로 만들어서 조회시 조인을 사용한다. JPA 에서는 조인전략(JOINED)이라고 한다. 통합 테이블로 변환: 테이블을 하나만 사용하여 통합한다. JPA 에서는 단일 테이블 전략(SINGLE_TABLE)이라고 한다. 서브타입 테이블로 변환: 모든 속성을 서브타입마다 하나의 테이블에 둔다. JPA 에서는 구.. 2021. 7. 10.