隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(lèi)(467)

          文章檔案(423)

          相冊(cè)

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827222
          • 排名 - 49

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          在建立實(shí)體對(duì)象之前,可以先實(shí)現(xiàn)一個(gè)公共的實(shí)體對(duì)象基類(lèi).在這個(gè)基類(lèi)對(duì)象中可以包含代表每一個(gè)實(shí)體對(duì)象唯一的
          標(biāo)識(shí) 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()方法,用于判斷兩個(gè)對(duì)象是否相等,但并不是在使用"=="進(jìn)行兩個(gè)對(duì)象是否相等的判斷時(shí)調(diào)用.因?yàn)槭褂?=="所判斷的是兩個(gè)對(duì)象的引用是否相等,也可以簡(jiǎn)單理解為兩個(gè)實(shí)例所引用的是否為內(nèi)存中的同一個(gè)對(duì)象.equals()方法可以理解為兩個(gè)對(duì)象在"含義"上是否相等,也就是說(shuō)這兩個(gè)對(duì)象所表達(dá)的意思是否相同.equals()方法在對(duì)象保存到集合容器類(lèi)(Collection)中時(shí)被調(diào)用.因?yàn)榧先萜黝?lèi)不允許其中存在兩個(gè)相同對(duì)象實(shí)例,其判斷的依據(jù)就是通過(guò)調(diào)用該實(shí)體對(duì)象的equals()方法來(lái)進(jìn)行判斷的.
                   如果修改了equals()方法,就必須修改hashCode()方法.如果不這樣的話,就違反java.lang.Object的通用的hashCode的約定,從而導(dǎo)致該類(lèi)無(wú)法與基于散列值的集合類(lèi)一起正常工作.
                   toString()方法,用于將當(dāng)前Java對(duì)象的實(shí)例轉(zhuǎn)換為可以描述其內(nèi)容的字符串.這個(gè)方法的作用是在程序調(diào)試的過(guò)程可以方便地得到實(shí)體對(duì)象中令人感興趣的信息,有利于更準(zhǔn)確及時(shí)地發(fā)現(xiàn)程序中的問(wèn)題.



          posted on 2007-08-29 19:48 Ke 閱讀(1113) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): hibernate
          主站蜘蛛池模板: 明溪县| 义马市| 邢台县| 江孜县| 潞城市| 桂平市| 三门县| 嘉义县| 留坝县| 凤山市| 缙云县| 通州市| 贞丰县| 乌鲁木齐县| 麻江县| 蓬溪县| 洪雅县| 社旗县| 东安县| 绩溪县| 明光市| 司法| 绵阳市| 罗江县| 望江县| 沙湾县| 普宁市| 永吉县| 清涧县| 海林市| 广南县| 佳木斯市| 天祝| 万盛区| 左权县| 浦城县| 瑞安市| 昌邑市| 会理县| 合川市| 兴山县|