乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Hibernate實(shí)體的equals和hashcode

       moonboat 2009-02-16
      討論引發(fā)自這里:
      http://www./topic/8946

      以下是我自己的感觸。
      equals實(shí)際上是java判斷兩個(gè)對(duì)象是否相等的一個(gè)依據(jù);而在set、map這樣的存儲(chǔ)位置與hashcode的集合中, hashcode起著計(jì)算位置的作用,同時(shí)又要滿足一個(gè)約定:equals相等,則hashcode必然相等。

      基于以上,hibernate實(shí)體的Entity也需要做出如下策略:
      1)怎樣才是相等實(shí)體對(duì)象
      2)在set、map這樣的跟hashcide有關(guān)的集合映射時(shí),如何保證相等對(duì)象hashcode也相等。

      可以看出關(guān)鍵還是如何決定兩個(gè)實(shí)體對(duì)象是否相等,至于hashcode其實(shí)根據(jù)equals去實(shí)現(xiàn)的。
      許多人提出來用實(shí)體對(duì)象的id來判斷是否相等,這其實(shí)源于hibernate的持久對(duì)象管理機(jī)制。Hibernate利用id屬性來管理一類持久對(duì)象,對(duì)于session中的一類持久對(duì)象,id是唯一的,因此id用作某一類持久對(duì)象的標(biāo)識(shí)符是合適的。

      那么否針對(duì)id判斷實(shí)體相等就是合理的策略了嗎?
      關(guān)鍵還是看你怎樣才認(rèn)為實(shí)體對(duì)象是相等的,這個(gè)倒不能采取hibernate對(duì)id的特殊用法。
      如果認(rèn)為業(yè)務(wù)屬性無所謂,只要id相等就相等,那就完全可以用id作為判斷相等的依據(jù)。
      如果需要根據(jù)業(yè)務(wù)屬性來判定,那么id就不是合理的策略,因?yàn)楹芸赡躨d不等但是業(yè)務(wù)屬性都相等。
      如果不是那么關(guān)心重復(fù)的實(shí)體對(duì)象,因此就不會(huì)覆蓋equals和hashcode方法,直接沿用Object的也是可以的,實(shí)際上很多時(shí)候我們都是這樣做的。
      經(jīng)過仔細(xì)的思考,發(fā)現(xiàn)這種提出這種討論本身都是夸大了問題。equals和hashcode根本不是hibernate提出的新概念和新要求。

      針對(duì)以上的分析,有沒有最佳實(shí)踐呢?
      看看Hibernate in action,有三種方法:
      1. 就是的這種用無意義主鍵id做hashCode/equals
      2. 就是用的所有值做hashCode/equals
      3. 用一個(gè)(或者幾個(gè))相對(duì)穩(wěn)定的業(yè)務(wù)字段做hashCode/equals (比如user, 就用userName).
      hibernate 推薦的是第3種, 按照這種推薦的做法, 就不會(huì)出現(xiàn)以上說的所有問題了, 這差不多是最佳的實(shí)踐了.

      當(dāng)然如果不知道如何依據(jù)業(yè)務(wù)屬性來做相等判斷時(shí),只要這樣:
      在BaseEntity中,根據(jù)id來覆寫equals和hashcode
      有特別需要的子類中,根據(jù)業(yè)務(wù)屬性來做equals和hashcode

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多