Object identity
참조 : Hibernate In Action 3.4. Understanding object identity
■ Object equality : equals(Object o)로 확인하며 객체가 가지고 있는 속성들의 값이 같다. Object class의 equals(Obejct o)메소드는 Object identity를 확인하기 때문에 overriding하여 사용해야 한다. (String class는 값을 비교하도록 overriding 되어있습니다.)
■ Database identity : 관계형 DB에 저장되어 있는 객체들이 같은 테이블에 있고 주키 값이 같으면 같은 row이며 동등하다.
public class Category {
private Long id;
...
public Long getId() {
return this.id;
}
private void setId(Long id) {
this.id = id;
}
...
}
■ The value or values are never null.
■ Each row has a unique value or values.
■ The value or values of a particular row never change.
후보키(cadidate key) = 주키가 될 수 있는 식별자들.(유일 한 값들)
natural primary key = 주키에 비즈니스 의미가 포함되어 있는 키. 주민등록번호 중 두번째 단어의 첫 숫자는 성별을 나타낸다.(하리수의 경우 이 수가 변하는데 이때 주키의 조건 중 세번 째 것을 위반하게 됩니다.)
surrogate key(synthetic identifiers) = 아무 의미가 담겨져 있지 않은 주키. 이걸 쓰는 것을 강추하며 하이버네이트에 미리 만들어 놓은 다음과 같은 것들이 있다.
bl114.bmp이중에서 예제에서는 sequence를 사용했었습니다.