티스토리 뷰

728x90
반응형

상속관계 매핑 (조인 전략) 테이블

해당 이미지를 보게 되면 객체 ORM 과 테이블은 유사한 관계를 가지고 있다.

단일 테이블 형태와 비슷하게 객체는 Item을 부모 클래스를 가지고 자식 클래스로 Album,Movie,Book 이 있다.

테이블을 보게되면 단일 테이블 같은 경우 Item이라는 테이블 안에 Album,Movie,Book 내용이 다들어간다.

하지만 조인 전략같은 경우 테이블이 세분화 되어있으며 해당 item의 PK 값을 각각의 자식 테이블들이 FK 값을 가지게 된다.

 

사용 어노테이션
  • @Inheritance(strategy=InheritanceType.JOIN)
  • @DiscriminatorColumn(name=””)
  • @DiscriminatorValue(””);
예제 확인
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn //JOINED 사용시 선언하는 것이 좋음
public class Item {​

@DIscriminatorColumn 선언과 비선언 차이 결과

→ 비선언인 경우

→ 선언하였을 경우

@DiscriminatorColumn default 값 변경
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="gubun")
public class Item {​

 

결과: DTYPE ⇒ GUBUN 컬럼 변경됨

조인 전략의 객체 상속 관계 예제
부모클래스 : Item, 자식 클래스 : Movie
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn
public class Item { //부모클래스
	@Id
	@GeneratedValue
	private Long id;
	private String name;
	private int price;
}


@Entity
public class Movie extends Item{ //자식클래스
  	private String director;
	private String actor;
}
@DiscriminatorValue 사용법

비선언 시 : default 값 Movie로 하여 Item의 컬럼 DTYPE에 들어감

선언 시 : 선언된 명에 해당하는 값으로 들어감

@Entity
@DiscriminatorValue("MMM") // 여기 선언함~
public class Movie extends Item{

조인 전략일 경우 값 등록 처리 쿼리
Movie movie = new Movie();
movie.setDirector("test2");
movie.setActor("bbb2");
movie.setName("바람과 함께 사라지다");
movie.setPrice(10000);
			
entityManager.persist(movie);

Movie 클래스에 값을 넣고 등록 할 경우 결과는?????

결과 : item 과 movie에 각각 저장되는 것을 확인 가능

insert 이미지

테이블 등록된 결과

결과 테이블

조인 전략처리시 select 할 경우의 쿼리

Movie findMovie = entityManager.find(Movie.class, movie.getId());
System.out.println(findMovie);

쿼리: movie에 item을 조인하여 들고 오게 된다.

 

조인 전략의 장점 과 단점

  • 장점
    • 테이블 정규화
    • 외래 키 참조 무결성 제약조건 활용가능
    • 저장공간 효율화
  • 단점
    • 조회시 조인을 많이 사용, 성능 저하
    • 조회 쿼리가 복잡함
    • 데이터 저장시 INSERT SQL 2번 호출
728x90
반응형
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함