成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iBatis框架做batch處理的問題

開發(fā) 后端
iBatis默認的autoCommit屬性為false,因此用iBatis框架做batch處理的時候基本不會遇到什么問題;在Spring環(huán)境下,要看具體DataSource的配置。

最近,同事的一個項目用Spring+iBatis做為數(shù)據(jù)持久層框架,MySql數(shù)據(jù)存儲。項目發(fā)布不久就遇到了嚴重的性能問題,因此決定采用batch的方式提交數(shù)據(jù)。我以前的一篇文章:里詳細的介紹了iBatis框架做batch處理的方式以及可能存在的問題和性能優(yōu)化,因此同事參考這偏文章對項目進行了改造,引入了batch處理機制。但事情并不順利,在只有2000條數(shù)據(jù)的情況下,用iBatis框架做batch處理和不做batch所消耗的時間居然沒有區(qū)別,平均都要50秒左右。而我在做測試的時候如果做batch僅僅需要1秒,甚至更少的時間。真是見鬼了,難道是Spring在搞鬼?因為我的測試和同事的項目唯一的區(qū)別就是我是直接使用iBatis的SqlMapClient,而同事的項目是使用Spring來獲取SqlMapClient的實例。仔細檢查了一下朋友的數(shù)據(jù)源配置,也沒有發(fā)現(xiàn)什么問題。如下:

 

  1.  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"   
  2.         destroy-method="close"> 
  3.         <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
  4.         <property name="url" value="jdbc:mysql://localhost/test"/> 
  5.         <property name="username" value="root"/> 
  6.         <property name="password" value="root"/> 
  7.     </bean> 
  8.     <bean id="sqlMapClient"   
  9.         class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> 
  10.         <property name="configLocation" value="SqlMapConfig.xml"/> 
  11.         <property name="dataSource" ref="dataSource"/> 
  12.     </bean> 

 

就在萬般無奈的時候,突然想到一個問題:如果JDBC的AutoCommit屬性被設(shè)置為true的話,那即便是按照batch的方式來寫程序,也是徒勞的,每一條語句都會直接執(zhí)行。于是抱著試試看的態(tài)度執(zhí)行了下面的語句:

  1. System.out.println("當前事物狀態(tài): " + sqlMapClient.getDataSource().getConnection().getAutoCommit());  

果然不出所料,輸出的值為:true,難怪batch不可用!問題找到了,如何解決呢?嘗試在batch語句執(zhí)行前手工設(shè)置autoCommit屬性為false,如:sqlMapClient.getDataSource().getConnection().setAutoCommit(false);結(jié)果不好用,于是查看了一下org.apache.commons.dbcp.BasicDataSource的源代碼,發(fā)現(xiàn)它的defaultAutoCommit屬性默認值為true,這就難怪spring獲取的SqlMapClient的autoCommit屬性為true了,既然問題找到了, 解決起來就容易多了,只需要在上面的datasource配置中增加一行:<property name="defaultAutoCommit" value="false"/>就可以了。

這里總結(jié)一下:iBatis默認的autoCommit屬性為false,因此用iBatis框架做batch處理的時候基本不會遇到什么問題;在Spring環(huán)境下,要看具體DataSource的配置。

【編輯推薦】

  1. iBATIS框架做batch處理優(yōu)化淺析
  2. iBATIS with MapBean應(yīng)用淺析
  3. 分析ibatis dao框架
  4. ibatis resultMap groupBy屬性巧使用
  5. ibatis resultMap報錯解決一例
責任編輯:佚名 來源: DIY部落
相關(guān)推薦

2009-07-22 16:43:22

iBATIS框架iBATIS優(yōu)化

2022-08-02 20:47:38

Spring框架應(yīng)用程序

2009-07-16 09:14:26

iBATIS DAO

2009-07-16 17:01:32

ibatis dao

2023-08-22 08:01:42

SpringBatch事務(wù)管理

2020-11-03 15:10:55

Spring Batc框架Java

2009-07-15 17:41:55

iBATIS事務(wù)處理

2009-07-20 13:22:47

iBATIS.Net日

2009-07-15 09:30:00

ibatis級聯(lián)

2017-01-12 14:50:15

大數(shù)據(jù)Spring Batc框架

2020-12-11 11:26:47

Spring批處理重試

2009-07-21 16:17:28

iBATIS.NET

2009-08-20 10:11:50

Java持久層框架iBATIS 3

2009-07-20 15:14:44

iBATIS.NET連

2020-11-02 18:38:17

Batch Norma深度學習

2009-07-16 09:46:20

iBATIS Log機

2009-07-17 10:59:59

iBATIS接口

2009-09-24 14:04:25

Hibernate i

2009-07-15 11:26:25

ibatis插件

2011-03-15 13:30:27

IBatis.netMySQL
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品国产馆在线真实露脸 | 国产精品美女久久久久久免费 | 国产精品久久久久久久久久久久久久 | 男女免费观看在线爽爽爽视频 | 国产 欧美 日韩 一区 | 欧美成人一区二区三区片免费 | 午夜影院 | 国产成人精品久久 | 成人美女免费网站视频 | 精品国产一区二区久久 | 免费国产一区二区 | 久久九精品 | 欧美激情综合五月色丁香小说 | 色在线免费 | 一级毛片高清 | 日韩人体在线 | a级黄色网 | 久久精品在线 | 美女福利网站 | 久久久久中文字幕 | 91精品国产综合久久小仙女图片 | 91麻豆久久久 | 日日人人 | 免费观看的av毛片的网站 | 日本一区二区三区精品视频 | 91亚洲国产精品 | 毛片久久久| 欧美一区成人 | 亚洲国产免费 | 久久综合久久综合久久 | 成人av播放 | 小草久久久久久久久爱六 | 日韩区 | 国产综合欧美 | 日韩av电影在线观看 | 国产精品久久久久久久 | 欧美色性| 自拍偷拍亚洲一区 | 精品成人在线观看 | av黄色免费在线观看 | 夜夜爽99久久国产综合精品女不卡 |