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 閱讀(291) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 凤台县| 定日县| 铜梁县| 吉木乃县| 化德县| 日土县| 高阳县| 澄江县| 阿图什市| 许昌市| 临湘市| 荔浦县| 普安县| 望谟县| 华宁县| 扶绥县| 德州市| 新郑市| 浦江县| 西乌| 张掖市| 博野县| 岗巴县| 九江市| 出国| 博白县| 津南区| 竹溪县| 永济市| 云阳县| 嘉义县| 兴仁县| 遵化市| 广昌县| 彭山县| 秦安县| 贵德县| 鄂尔多斯市| 永川市| 南充市| 邵东县|