在建立實體對象之前,可以先實現一個公共的實體對象基類.在這個基類對象中可以包含代表每一個實體對象唯一的
標識 id 屬性,以及一些公用的方法.具體如下
BaseModel.java
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
public class BaseModel implements Serializable{
/**
* The Generated SerialVersionUID
*/
private static final long serialVersionUID = 7766184319541530720L;
/**
* The identify of the object
*/
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
/**
* Common implement equals method
*/
public boolean equals( Object obj )
{
if( this==obj ) return true;
if( !( obj instanceof BaseModel ) )
return false;
BaseModel target = (BaseModel)obj;
if( this.getId()!=null && this.getId().length()>0 )
{
return this.getId().equals( target.getId() );
}
if( target.getId()!=null && target.getId().length()>0 )
{
return false;
}
return EqualsBuilder.reflectionEquals(this, obj);
}
/**
* Generate the hash code
*/
public int hashCode()
{
if( this.getId()!=null && this.getId().length()>0 )
{
return this.getId().hashCode();
}
return HashCodeBuilder.reflectionHashCode(this);
}
/**
* Common implement toString method
*/
public String toString()
{
return ReflectionToStringBuilder.toString( this );
}
}
equals()方法,用于判斷兩個對象是否相等,但并不是在使用"=="進行兩個對象是否相等的判斷時調用.因為使用"=="所判斷的是兩個對象的引用是否相等,也可以簡單理解為兩個實例所引用的是否為內存中的同一個對象.equals()方法可以理解為兩個對象在"含義"上是否相等,也就是說這兩個對象所表達的意思是否相同.equals()方法在對象保存到集合容器類(Collection)中時被調用.因為集合容器類不允許其中存在兩個相同對象實例,其判斷的依據就是通過調用該實體對象的equals()方法來進行判斷的.
如果修改了equals()方法,就必須修改hashCode()方法.如果不這樣的話,就違反java.lang.Object的通用的hashCode的約定,從而導致該類無法與基于散列值的集合類一起正常工作.
toString()方法,用于將當前Java對象的實例轉換為可以描述其內容的字符串.這個方法的作用是在程序調試的過程可以方便地得到實體對象中令人感興趣的信息,有利于更準確及時地發現程序中的問題.
posted on 2007-08-29 19:48
Ke 閱讀(1109)
評論(0) 編輯 收藏 所屬分類:
hibernate