'equals'에 해당되는 글 1건

  1. 2010.05.31 equals(), hashcode() 메소드를 제공해보기
영속 객체를 Set에 저장할때나, 준영속 객체를 영속 상태로 변경할때는 반드시
equqls(), hashCode()를 구현해주어야 한다.

equals()
- 테이블 식별자 값의 비교
/*
 * 객체가 테이블에 저장되기 전에는 식별자 필드값이 정해지지 않울수 있는데,
 * 이경우 식별자 필드의 값이 같다 하더라고 두 객체가 동일한 테이블 행을 표현한다고 말할수 없다.
*/
public boolean equals(Obejct other) {
   
    if (other == null) return false;
    if ( !(other instanceof User) ) return false;

    if (this == other) return true;
    User user = (User)others;

    if (other.getId() == null || this.getId() == null) return false;
    return this.getId().equals(user.getId());
}

- 비즈니스 키 비교
public class User {

    public boolean equals(Object other) {
        if (this == other) return true;
        if ( !(other intanceof User) ) return false;
        final User user = (User) other;
        // securityNo 와 name을 비지니스 키로 사용
        if ( !user.getSecurityNo().equals( getSecurityNo() )) return false;
        if ( !user.getName().equals( getName() )) return false;
        return true;
    }

    public int hashCode() {
        int result;
        result = getSecurityNo().hashCode();
        result = 29 * result + getName();
        return result;
    }
}


참조 : 객체의 hashcode에 대한 고찰

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 영겁회귀

티스토리 툴바