qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Hibernate與數據庫的觸發器協同工作

          Hibernate 與數據庫中的觸發器協同工作時, 會造成兩類問題
            1、觸發器使 Session 的緩存中的持久化對象與數據庫中對應的數據不一致:觸發器運行在數據庫中, 它執行的操作對 Session 是透明的 Session 的
            解決方案: 在執行完 Session 的相關操作后, 立即調用 Session 的 flush() 和 refresh() 方法, 迫使 Session 的緩存與數據庫同步(refresh() 方法重新從數據庫中加載對象)
            2、update() 方法盲目地激發觸發器: 無論游離對象的屬性是否發生變化, 都會執行 update 語句, 而 update 語句會激發數據庫中相應的觸發器
            解決方案:在映射文件的的 <class> 元素中設置 select-before-update 屬性: 當 Session 的 update 或 saveOrUpdate() 方法更新一個游離對象時, 會先執行 Select 語句, 獲得當前游離對象在數據庫中的最新數據, 只有在不一致的情況下才會執行 update 語句(沒有用到觸發器的時候一般的情況下最好不要設置,因為會降低效率的)

          posted on 2014-10-30 11:57 順其自然EVO 閱讀(358) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄數據庫

          <2014年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 黄陵县| 衡阳市| 定边县| 望江县| 荔浦县| 冀州市| 阆中市| 颍上县| 马尔康县| 南雄市| 沙湾县| 新宁县| 邛崃市| 汾阳市| 通州市| 南昌市| 安丘市| 共和县| 景泰县| 耿马| 金昌市| 绿春县| 株洲县| 诸城市| 罗城| 张掖市| 莱芜市| 崇礼县| 盐源县| 上杭县| 河西区| 郁南县| 汾西县| 广宁县| 连城县| 隆昌县| 宝坻区| 遂川县| 苍梧县| 井研县| 文昌市|