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

          第一個(gè)Blog,記錄哈哈的生活

          常用鏈接

          留言簿(16)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          收藏夾

          Java links

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          batch_size 即同時(shí)提交數(shù)據(jù)的數(shù)量,原本與事務(wù)并沒(méi)有什么關(guān)系,但如果涉及到同一張表數(shù)據(jù)的同一種操作,可能就會(huì)發(fā)生微妙的關(guān)系了。

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

          預(yù)測(cè)結(jié)果:第一條數(shù)據(jù)成功,第二條失敗。
          實(shí)際結(jié)果:兩條數(shù)據(jù)均失敗。
          原因:hibernate 將兩條插入放到了同一個(gè) batch 中,提交同時(shí)失敗了。

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

          預(yù)測(cè)結(jié)果:第一條數(shù)據(jù)成功,第二條失敗。
          實(shí)際結(jié)果:第一條數(shù)據(jù)成功,第二條失敗。
          原因:hibernate 分別插入數(shù)據(jù)并提交,在無(wú)事務(wù)的情況下,第一條成功,第二條失敗。

          那么如何讓場(chǎng)景一得到預(yù)測(cè)結(jié)果呢,一個(gè)簡(jiǎn)單的解決方法,將 hibernate.jdbc.batch_size 設(shè)置為 1,即可。

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

          FeedBack:
          # re: Hibernate 的 batch_size 與事務(wù)[未登錄](méi) 2008-03-06 22:55 Doublej
          是不是加上:
          <property name="jdbc.batch_size">1</property>
          我特意試了下.好像還是兩條都不成功...  回復(fù)  更多評(píng)論
            
          # re: Hibernate 的 batch_size 與事務(wù) 2008-03-07 11:15 哈哈的日子
          試一下 hibernate.jdbc.batch_size,看看事務(wù)配置,我這邊沒(méi)問(wèn)題。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 尚义县| 南皮县| 兴义市| 鸡东县| 澄城县| 皮山县| 嘉祥县| 抚州市| 津南区| 闽侯县| 甘泉县| 桃园县| 濮阳县| 柞水县| 湘西| 陈巴尔虎旗| 曲阳县| 无棣县| 宁都县| 方山县| 沙坪坝区| 古丈县| 仁寿县| 佛冈县| 清流县| 灵丘县| 克什克腾旗| 古浪县| 荥阳市| 隆尧县| 即墨市| 乌拉特中旗| 蓬溪县| 临漳县| 吉首市| 昌宁县| 庆阳市| 额敏县| 天长市| 天全县| 民勤县|