이런 논리모델을 물리모델로 구현하는 방법 3가지가 있다.
@Inheritance(strategy = InheritanceType. N )
N 위치에 들어가는 것에 대해서 논의
장점
정석적인 방법
외래키 참조 무결성 제약조건 활용 가능
저장공간 효율화
단점
한 테이블에 다 떄려박는 전략
null이 들어갈 수 있지만 , 빠를 수 있다
테이블 구분을 위해 DTYPE이 필수로 생성된다
쓰면 안되는 전략
테이블을 묶을 수 없기 때문에 조회 시 모든 table을 union해야 해서 비 효율적
DB는 따로 쓰는데 속성만 상속해서 사용하고 싶을 때
추상클래스 권장
위의 내용이 정리돼있는 블로그
@IdClass 를 쓰는게 더 좋다
https://stackoverflow.com/questions/212350/which-annotation-should-i-use-idclass-or-embeddedid
김영한 ORM 강좌 정리
- 식별자 필드가 2개 이상이면 별도의 식별자 클래스를 만들고 그곳에 equals와 hashCode를 구현해야 합니다.
- 복합 키에는 @GenerateValue를 사용 할 수 없습니다. 복합 키를 구성하는 여러 컬럼 중 하나에도 사용할 수 없습니다.
이어서
참고블로그
@PrimaryKeyJoinColumn