데이터베이스 테이블 사이에 관계는 외래키가 기본키에 포함되는지 여부에 따라 식별 관계와 비식별 관계로 구분한다.
식별 관계(Identifying Relationship)
부모 테이블의 기본키를 내려받아 자식 테이블의 기본키 + 외래키로 사용하는 관계다.

PARENT 테이블의 기본키(PARENT_ID)를 받아서 CHILD 테이블의 기본키 + 외래키로 사용한다.
비식별 관계(Non-Identifying Relationship)
부모 테이블의 기본키를 받아서 자식 테이블의 외래키로만 사용하는 관계다.

PARENT 테이블의 기본키(PARENT_ID)를 받아서 CHILD 테이블의 외래키로만 사용한다.
비식별 관계는 외래키에 NULL을 허용하는지에 따라 필수적 비식별 관계와 선택적 비식별 관계로 나뉜다.
NULL을 허용하지 않는다. 연관관계를 필수적으로 맺어야 한다.NULL을 허용한다. 연관관계를 맺을지 말지 선택할 수 있다.데이터베이스 테이블을 설계할 때 식별 관계나 비식별 관계 중 하나를 선택해야 한다.
최근에는 비식별 관계를 주로 사용, 꼭 필요한 곳에만 식별 관계를 사용하는 추세
JPA는 식별 관계와 비식별 관계를 모두 지원
기본키를 구성하는 컬럼이 하나면 단순하게 매핑한다.
@Entitypublic class Hello{ @Id private String id;}
JPA에서 식별자를 둘 이상 사용하려면 별도의 식별자 클래스를 만들어야 한다.
//오류(별도의 식별자 클래스를 만들지 않음)@Entitypublic class Hello{ @Id private String id1; @Id private String id2; //실행 시점에 매핑 예외}
JPA는 영속성 컨텍스트에 엔티티를 보관할 때 엔티티의 식별자를 키로 사용한다.
그리고 식별자를 구분하기 위해 equals와 hashCode를 사용해서 동등성 비교를 한다.
그런데 식별자 필드가 하나일 때는 보통 자바의 기본 타입을 사용하므로 문제가 없지만,