🔗 복합키와 식별 관계 매핑

1. 식별 관계 vs 비식별 관계

데이터베이스 테이블 사이에 관계는 외래키가 기본키에 포함되는지 여부에 따라 식별 관계와 비식별 관계로 구분한다.

2. 복합키 : 비식별 관계 매핑

기본키를 구성하는 컬럼이 하나면 단순하게 매핑한다.

@Entitypublic class Hello{    @Id    private String id;}

JPA에서 식별자를 둘 이상 사용하려면 별도의 식별자 클래스를 만들어야 한다.

//오류(별도의 식별자 클래스를 만들지 않음)@Entitypublic class Hello{    @Id    private String id1;    @Id    private String id2; //실행 시점에 매핑 예외}

JPA는 영속성 컨텍스트에 엔티티를 보관할 때 엔티티의 식별자를 키로 사용한다.

그리고 식별자를 구분하기 위해 equalshashCode를 사용해서 동등성 비교를 한다.

그런데 식별자 필드가 하나일 때는 보통 자바의 기본 타입을 사용하므로 문제가 없지만,