식별관계
부모 테이블의 기본 키를 받아서 자식 테이블의 기본 키와 외래 키로 사용하는 관계
부모 테이블의 기본 키를 받아서 자식 테이블의 외래 키로만 사용하는 관계
필수적 비식별관계 : 외래 키에 Null 값이 들어가는것을 허용하지 않음
선택적 비식별관계 : 외래 키에 Null 값이 들어가는것을 허용함
복합 키
복합키를 사용하고자 한다면 별도의 식별자 클래스를 만들어야 한다.
식별자 클래스는 Serializable 인터페이스를 implements 해야 한다.
또한 기본 키를 구분하기 위하여 equals와 hashCode 메서드를 따로 구현해야 한다. // !!!
public class 식별자 클래스 implements Serializable {
private Long id1;
private Long id2; // 두개의 키가 하나의 복합 키 역할을 함
public 식별자 클래스 () { // 기본 생성자
...
}
public 식별자 클래스(Long id1, Long id2) {
...
}
@Override
public boolean equals(Object o) {..} // equals 메소드 구현
@Override
public int hashCode() {..} // hashCode 메소드 구현
}
이렇게 만들어진 식별자 클래스를 구분하기 위해선 @IdClass 혹은 @EmbeddedId를 사용한다.
복합키를 사용할 경우, 자식 클래스가 식별관계, 비식별관계일때 사용법이 조금씩 다르다.
그러나 복합키를 사용할 경우 단점이 꽤 많다…