隨筆 - 175  文章 - 202  trackbacks - 0
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          第一個Blog,記錄哈哈的生活

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Java links

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          batch_size 即同時提交數據的數量,原本與事務并沒有什么關系,但如果涉及到同一張表數據的同一種操作,可能就會發生微妙的關系了。

          場景如下:
          場景一:使用 spring 控制事務,將方法事務配置為 not_supported,向同一張表中插入兩條數據,保證第一條數據正常插入,而第二條數據受約束(如唯一約束)插入失敗。

          預測結果:第一條數據成功,第二條失敗。
          實際結果:兩條數據均失敗。
          原因:hibernate 將兩條插入放到了同一個 batch 中,提交同時失敗了。

          場景二:同樣使用 spring 控制事務,將方法事務配置為 not_supported,向第一張表中插入一條合法數據,成功,向第二張表插入數據,受約束(如唯一約束)插入失敗。

          預測結果:第一條數據成功,第二條失敗。
          實際結果:第一條數據成功,第二條失敗。
          原因:hibernate 分別插入數據并提交,在無事務的情況下,第一條成功,第二條失敗。

          那么如何讓場景一得到預測結果呢,一個簡單的解決方法,將 hibernate.jdbc.batch_size 設置為 1,即可。

          所以,即使控制了事務,也未必能夠得到期望的結果,還需要考慮某些特殊的場景帶來的影響。
          posted on 2008-03-06 14:18 哈哈的日子 閱讀(1831) 評論(2)  編輯  收藏 所屬分類: Java

          FeedBack:
          # re: Hibernate 的 batch_size 與事務[未登錄] 2008-03-06 22:55 Doublej
          是不是加上:
          <property name="jdbc.batch_size">1</property>
          我特意試了下.好像還是兩條都不成功...  回復  更多評論
            
          # re: Hibernate 的 batch_size 與事務 2008-03-07 11:15 哈哈的日子
          試一下 hibernate.jdbc.batch_size,看看事務配置,我這邊沒問題。  回復  更多評論
            
          主站蜘蛛池模板: 九龙坡区| 汝城县| 那坡县| 民乐县| 汾阳市| 洪泽县| 含山县| 巧家县| 随州市| 长岛县| 嘉鱼县| 武乡县| 民丰县| 和田县| 博白县| 长兴县| 吉木萨尔县| 三河市| 保山市| 宝丰县| 芒康县| 盐城市| 沾益县| 南靖县| 白玉县| 灵丘县| 上高县| 丹棱县| 广宗县| 涟水县| 灵寿县| 泰顺县| 浦县| 沐川县| 腾冲县| 县级市| 伊宁市| 子洲县| 临高县| 南陵县| 西丰县|