'웹개발(JSP&Servlet)/Hibernate'에 해당되는 글 14건

  1. 2010.05.31 equals(), hashcode() 메소드를 제공해보기
  2. 2010.05.27 영속 클래스 (persistence class)
영속 객체를 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에 대한 고찰

Posted by 영겁회귀
자바 클래스를 하이버네이트에서 사용하기 위해 필요한 조건

1. 기본 생성자를 제공
2. 데이터베이스 식별자 칼럼과 매핑될 필드를 제공
id등 식별자값을 많이 사용하므로, 식별자 칼럼용 필드를 제공하는 것이 좋다.
detached(준영속)상태의 객체를 update나 merage를 사용하여 영속상태로 변경할때나
Session.saveOrUpdate()
3. 영속 클래스를 final 로 지정하지 않는다
4. 클래스 필드를 위한 get/set메소드를 제공
5. equals()와 hashCode()  메소드를 제공
6. Serializable 인터페이스를 구현

붉은색 조건은 필수 조건, 파란색 조건은 따르는 것이 좋은것
, 녹색 조건은 필요한 경우만

p.s 영속클래스란?
      영속클래스는 비지니스 문제의 엔티티들을 구현하는 어플리케이션 내의 클래스들을 말함
       http://jjaeko.tistory.com/37
       http://openframework.or.kr/framework_reference/hibernate/ver3.x/html/persistent-classes.html
Posted by 영겁회귀