posts - 31,  comments - 31,  trackbacks - 0

          程序功能:
          使用ibatis+spring將oracle數據庫中的tfile表中的數據抽取到db2數據庫的tfile表,這兩個表的結構相同。

          測試環境:
          celeron M 1.4/512M/mysql 5.0數據庫
          代碼:

          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub
                  ClassPathResource resource = new ClassPathResource(
                          
          "applicationContext.xml");
                  BeanFactory factory 
          = new XmlBeanFactory(resource);
                  TFileDAO tFileDao 
          = (TFileDAO) factory.getBean("tfile");

                  TFileDAO test2FileDao 
          = (TFileDAO) factory.getBean("test2tfile");
                  
          //獲取全部數據
                  List list = tFileDao.getAll();
                  
          //開啟事務
                  DataSourceTransactionManager txm = (DataSourceTransactionManager) factory
                          .getBean(
          "test2transactionManager");
                  DefaultTransactionDefinition def 
          = new DefaultTransactionDefinition();
                  def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
                  TransactionStatus status 
          = txm.getTransaction(def);
                  
          try {
                      test2FileDao.getSqlMapClient().startBatch();
                      
          for (int i = 0, count = list.size(); i < count; i++{
                      
          //插入數據
                          test2FileDao.insert((TFile) list.get(i));
                      }

                      test2FileDao.getSqlMapClient().executeBatch();// 這兩句有問題,請見Spring+ibatis心得2!
                  }
           catch (Exception e) {
                      txm.rollback(status);
                      System.out.println(e);
                  }

                  txm.commit(status);
                  System.out.println(list.size());
              }
          1、保證使用長事務,不要在每個插入都事務提交,這樣性能可以有很大幅度的提升
          2、使用 test2FileDao.getSqlMapClient().startBatch();
                        test2FileDao.getSqlMapClient().executeBatch();
                       可以發起jdbc對批量數據插入的優化與自動代碼壓縮功能。

                結語:這次使用ibatis在同樣的硬件、數據庫、數據條數的環境下測試,在不起用batch,所有數據庫,數據池特性均使用默認設置情況下使用19秒,并且使用一次性將數據讀入內存的方式,效果優于hibernate,所以真信優化后的程序應該比hibernate效率更高。但是從程序編寫方面來講,hibernate省去了過多的代碼,可以讓程序員更輕松些。
          posted on 2007-04-26 19:54 小平 閱讀(3211) 評論(1)  編輯  收藏


          FeedBack:
          # re: ibatis +spring批量操作心得
          2009-12-17 21:47 | 團派家園
          3.0出來了嗎。  回復  更多評論
            

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


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          framework

          j2me

          java

          linux

          web

          其他

          友情鏈接

          素材

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 衡阳县| 山阳县| 章丘市| 麻栗坡县| 仪陇县| 随州市| 布尔津县| 沈丘县| 宜州市| 聂拉木县| 盘山县| 同江市| 泽州县| 镇沅| 昌黎县| 时尚| 临洮县| 敦煌市| 遵义市| 荆门市| 鸡西市| 乡宁县| 康马县| 方山县| 宜良县| 龙南县| 满城县| 台前县| 巧家县| 兴和县| 尉氏县| 康乐县| 石景山区| 嘉禾县| 平谷区| 民县| 孝感市| 彭州市| 新竹市| 临城县| 高邑县|