<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 11.1.3\. 關注對象標識(Considering object identity) 應用程序可能在兩個不同的`Session`中并發訪問同一持久化狀態,但是, 一個持久化類的實例無法在兩個 `Session`中共享。因此有兩種不同的標識語義: 數據庫標識 `foo.getId().equals( bar.getId() )` JVM 標識 `foo==bar` 對于那些關聯到 _特定_`Session` (也就是在單個`Session`的范圍內)上的對象來說,這 兩種標識的語義是等價的,與數據庫標識對應的JVM標識是由Hibernate來保 證的。不過,當應用程序在兩個不同的session中并發訪問具有同一持久化標 識的業務對象實例的時候,這個業務對象的兩個實例事實上是不相同的(從 JVM識別來看)。這種沖突可以通過在同步和提交的時候使用自動版本化和樂 觀鎖定方法來解決。 這種方式把關于并發的頭疼問題留給了Hibernate和數據庫;由于在單個線程內,操作單元中的對象識別不 需要代價昂貴的鎖定或其他意義上的同步,因此它同時可以提供最好的可伸縮性。只要在單個線程只持有一個 `Session`,應用程序就不需要同步任何業務對象。在`Session` 的范圍內,應用程序可以放心的使用`==`進行對象比較。 不過,應用程序在`Session`的外面使用`==`進行對象比較可能會 導致無法預期的結果。在一些無法預料的場合,例如,如果你把兩個脫管對象實例放進同一個 `Set`的時候,就可能發生。這兩個對象實例可能有同一個數據庫標識(也就是說, 他們代表了表的同一行數據),從JVM標識的定義上來說,對脫管的對象而言,Hibernate無法保證他們 的的JVM標識一致。開發人員必須覆蓋持久化類的`equals()`方法和 `hashCode()` 方法,從而實現自定義的對象相等語義。警告:不要使用數據庫標識 來實現對象相等,應該使用業務鍵值,由唯一的,通常不變的屬性組成。當一個瞬時對象被持久化的時 候,它的數據庫標識會發生改變。如果一個瞬時對象(通常也包括脫管對象實例)被放入一 個`Set`,改變它的hashcode會導致與這個`Set`的關系中斷。雖 然業務鍵值的屬性不象數據庫主鍵那樣穩定不變,但是你只需要保證在同一個`Set` 中的對象屬性的穩定性就足夠了。請到Hibernate網站去尋求這個問題更多的詳細的討論。請注意,這不是一 個有關Hibernate的問題,而僅僅是一個關于Java對象標識和判等行為如何實現的問題。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看