본문 바로가기

IdClass3

JPA - 고급맵핑 - 복합키와 식별 관계 맵핑 - 참조: 자바 ORM 표준 JPA 프로그래밍 - 참조: https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/JoinColumns.html - 식별 vs 비식별 관계 이전에도 언급했듯이 DB 에서는 외래키(FK)를 기본키(PK)에 포함하는지 여부에 따라 식별과 비식별 관계로 구분한다. 위의 ER Diagram 에서 CHILD 테이블을 보면 PARENT 테이블의 PK 인 PARENT_ID 를 PK 이자 FK 로 사용하고 있다. 외래키를 기본키에 포함하고 있으므로 식별관계이다. 위 다이어그램은 CHILD 테이블에서 PARENT_ID 를 FK 로만 참조하고 있고, CHILD_ID 를 PK 로 사용하고 있다. FK 가 PK 에 포함되지 않으므로 비식별.. 2021. 7. 11.
JPA - 다양한 연관관계 - M : N 비식별관계 - 참조: 자바 ORM 표준 JPA 프로그래밍 - M : N 연결 엔티티, 비식별 앞에서 M : N 연결 엔티티를 알아보았다. 복합 키를 사용하기 위해 @IdClass 를 추가하고, 식별자 클래스를 지정하였다. 식별자 클래스는 Serializable 을 구현해야하고, equals 와 hashCode 재정의 및 그 외에도 지켜야하는 규약이 있었다. USER_PRODUCT 테이블에서 복합키를 사용했었는데 DB 설계를 해본사람이라면 이를 그대로 사용하지는 않을 것이다. 위의 다이어그램에서 USER_PRODUCT 테이블의 명이 ORDERS 로 변경되었다. 회원이 상품을 몇개 그리고 언제 주문했는지 정보를 추가하면서 비즈니스에서 주문이라는 업무의 성격이 되었기 때문이다. 또 ORDER_ID 를 추가하여 PK 로 .. 2021. 7. 10.
JPA - 다양한 연관관계 - M : N 식별관계 - 참조: 자바 ORM 표준 JPA 프로그래밍 - M : N 연결 엔티티 이제 1 : 1, 1 : N, M : N 의 단방향과 양방향을 모두 알아보았으니 도메인 설계만 잘하면 JPA 로 모든 맵핑을 할 수 있을까? 세상 문제가 그렇게 간단하면 좋겠지만 M : N 관계에서 더 살펴볼 사항이 있다. 앞의 글 다양한 연관관계 M : N 의 ER Diagram 과 UML 을 다시 한번 생각해보자. ER Diagram 에 USER 와 PRODUCT 테이블이 있었고, 두 테이블이 서로에 대해 M : N 의 관계라면 외래키를 이용해서 표현할 방법이 없으므로 USER_PRODUCT 조인 테이블도 추가했었다. 반면 객체(UML Digram)에서는 User 와 Product 엔티티를 선언하고 서로 Collection 으로.. 2021. 7. 10.