Java世界

          學習筆記

          常用鏈接

          統計

          積分與排名

          天籟村

          新華網

          雅虎

          最新評論

          Hibernate對象狀態和Session方法——學習筆記

          Session接口中方法:

          1. clear  清除Session緩存中的內容
          2. close 關閉Session對象
          3. contains 判斷session內是否存在該持久化對象
          4. delete 刪除session中的持久化對象
          5. evict 清除session緩存當中的一個持久化對象
          6. get 獲取一個持久化對象 如果數據庫沒有該對象則返回null
          7. load 獲取一個持久化對象 如果數據庫沒有該對象則產生ObjectNotFoundExce
          ption異常,load查詢出來的對象是一個延遲加載。
          get和load方法可以不添加事務處理,查詢都可以不進行事務處理的添加。
          8. lock 獲取一個帶樂觀鎖的持久化對象
          10. persist 保存一個對象到持久化,當無事務時,不執行sql語句,不提交對象到數據庫中,有事務時與save方法相同。
          11. save 保存一個對象到持久化,當無事務時,執行sql語句,對象插入數據庫,然后又回滾出來。
          12. saveOrUpdate 保存或者更新一個對象到持久化狀態。

          saveOrUpdate什么時候執行save?什么時候執行update呢?
          當對象為瞬時狀態時,執行save方法。
          當對象為托管狀態時執行update方法。

           
          9. merge 更新一個脫管狀態對象到脫管狀態,它處理的對象總是脫管的。
          13. update 更新一個脫管狀態對象到持久化狀態。


          對象什么情況下為持久化狀態呢?
          1. 對象在數據庫中有與之相對應的記錄,如果數據庫中無記錄就是瞬時態。
          2. 對象與Session相關聯,當調用對象轉入到持久態的方法時,并且在事務提交之前。

          持久化狀態當中的對象,當發生值的改變時,數據庫能檢測到,即修改數據庫內的數據。


          當對象從持久化狀態出來后,即成為脫管狀態或者游離狀態。

          對象什么情況下位脫管狀態或游離狀態?
          1. 對象與Session之間沒有關聯,表示session調用evict,close,clear方法后就表示與對象無關聯。
          2. 對象主鍵必須有值;如果主鍵為Integer類型,大于0表示有值,小于等于0表示無主鍵值;如果主鍵為String類型,無主鍵值那么為null,其他的就表示有主鍵。  那么對象無主鍵值就表示它是一個瞬時狀態。


           

          posted on 2010-07-15 08:54 Rabbit 閱讀(290) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鄢陵县| 顺昌县| 平凉市| 大兴区| 渭源县| 大足县| 玛曲县| 隆尧县| 富裕县| 亳州市| 滨州市| 海阳市| 苗栗县| 岫岩| 巴林左旗| 屏东市| 旬阳县| 定结县| 民和| 河津市| 嘉祥县| 芮城县| 阳西县| 海阳市| 镇安县| 绥芬河市| 马鞍山市| 松滋市| 巨鹿县| 法库县| 五华县| 肥东县| 财经| 漳州市| 和政县| 磐石市| 新巴尔虎左旗| 泽普县| 鞍山市| 乌鲁木齐县| 咸丰县|