Hibernate equals 와 hashCode
public class User {
……
public boolean equals(Object o) {
if(this == o) return true;
if(id == null || !(o instanceof User)) return false;
final User user == (User) o; return this.id.equals(user.getId());
}
public int hasCode() {
return id == null ? System.identityHashCode(this) : id.hashcode();
}
}
이 예 는 Hibernate in Action 123 페이지 의 범례 에서 나 온 것 이지 만 격려 되 지 않 는 예 입 니 다. 대상 이 new 로 나 와 save () 가 없 을 때 id 값 이 부여 되 지 않 기 때문에 이 방법 은 적용 되 지 않 습 니 다. 비교적 사용 되 는 방법 은 대상 에 진정 으로 포 함 된 속성 값 에 따라 비교 하 는 것 이다. 참고 수첩 에서 예 를 들 어 Cat. 자바
public class Cat {
...
public boolean equals(Object other) {
if (this == other) return true;
if (!(other instanceof Cat)) return false;
final Cat cat = (Cat) other;
if (!getName().equals(cat.getName())) return false;
if (!getBirthday().equals(cat.getBirthday())) return false;
return true;
}
public int hashCode() {
int result;
result = getName().hashCode();
result = 29 * result + getBirthday().hashCode(); return result;
}
}
저 희 는 더 이상 id 속성 을 간단하게 비교 하지 않 습 니 다. 이것 은 비 즈 니스 키 (business key) 에 따라 equals () 와 hasCode () 를 만 드 는 예 입 니 다. 물론 남 은 문 제 는 귀하 가 실제 작업 할 때 관련 비 즈 니스 키 를 어떻게 이용 하 느 냐 하 는 것 입 니 다. 이것 은 귀하 의 실제 비 즈 니스 수요 에 따라 결정 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.