복합키 - 식별관계1

PPakSSam·2022년 1월 12일
0
post-thumbnail

복합키 목차

복합키 - 식별 관계 목차


식별 관계 매핑 - @IdClass

위의 다이어그램을 @IdClass를 이용하여 작성해보면 다음과 같다.

// 부모
@Entity
public class Parent {

    @Id
    @Column(name = "PARENT_ID")
    private String id;
    
    private String name;
}

// 자식
@Entity
@IdClass(ChildId.class)
public class Child {
	
    @Id
    @Column(name = "CHILD_ID")
    private String id;
    
    @Id
    @ManyToOne
    @JoinColumn(name = "PARENT_ID")
    private Parent parent;
}

// 자식 ID
public class ChildId implements Serializable {
    
    private String id;
    private String parent;
    
    // equals, hashCode
}

// 손자
@Entity
@IdClass(GrandChildId.class)
public class GrandChild {

    @Id
    @Column(name = "GRANDCHILD_ID")
    private String id;
    
    @Id
    @ManyToOne
    @JoinColumns({
      @JoinColumn(name = "PARENT_ID, referencedColumnName = "PARENT_ID")
      @JoinColumn(name = "CHILD_ID, referencedColumnName = "CHILD_ID")
    })
    private Child child;
}

// 손자 ID
public class GrandChildId implements Serializable {

    private String id;
    private ChildId child;
    
    // equals, hashCode
}

위와 같이 작성한 후 다음과 같이 작성하면 저장이 잘 됨을 알 수 있다.

Parent parent = new Parent();
parent.setName("PARENT_NAME#1");
parent.setId("PARENT#1");
em.persist(parent);

Child child = new Child();
child.setId("CHILD#1");
child.setParent(parent);
em.persist(child);

GrandChild grandChild = new GrandChild();
grandChild.setId("GRANDCHILD#1");
grandChild.setChild(child);
em.persist(grandChild);
profile
성장에 대한 경험을 공유하고픈 자발적 경험주의자

0개의 댓글