Jpa 상속관계 매핑

ims·2020년 10월 27일
0

BlueDot

목록 보기
16/28

이런 논리모델을 물리모델로 구현하는 방법 3가지가 있다.

@Inheritance

@Inheritance(strategy = InheritanceType. N )

N 위치에 들어가는 것에 대해서 논의

1. Join

장점

  • 정석적인 방법

  • 외래키 참조 무결성 제약조건 활용 가능

  • 저장공간 효율화

단점

  • 쿼리가 복잡하고, 조회시 조인을 많이 사용해서 성능저하 가능성 있음

2. Single Table

  • 한 테이블에 다 떄려박는 전략

  • null이 들어갈 수 있지만 , 빠를 수 있다

  • 테이블 구분을 위해 DTYPE이 필수로 생성된다

3. Table_Per_Class

  • 쓰면 안되는 전략

  • 테이블을 묶을 수 없기 때문에 조회 시 모든 table을 union해야 해서 비 효율적

@MappedSuperClass

DB는 따로 쓰는데 속성만 상속해서 사용하고 싶을 때

추상클래스 권장

위의 내용이 정리돼있는 블로그

https://backend.gitbooks.io/jpa/content/chapter7.html

식별관계 매핑

@EmbededId vs @idClass

@IdClass 를 쓰는게 더 좋다

https://stackoverflow.com/questions/212350/which-annotation-should-i-use-idclass-or-embeddedid

김영한 ORM 강좌 정리

https://steady-hello.tistory.com/106

  • 식별자 필드가 2개 이상이면 별도의 식별자 클래스를 만들고 그곳에 equals와 hashCode를 구현해야 합니다.
  • 복합 키에는 @GenerateValue를 사용 할 수 없습니다. 복합 키를 구성하는 여러 컬럼 중 하나에도 사용할 수 없습니다.

    https://webcoding-start.tistory.com/25

이어서

http://wonwoo.ml/index.php/post/832

참고블로그

상속관계 매핑 (extends)

@PrimaryKeyJoinColumn

https://stackoverflow.com/questions/25145697/inheritancetype-joined-primarykeyjoincolumn-and-nested-subclasses

profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글