笑看風云

          一切從頭開始
          posts - 28, comments - 1, trackbacks - 0, articles - 2

          hibernate批量插入數據

          Posted on 2008-12-11 16:10 笑看風云 閱讀(5077) 評論(0)  編輯  收藏 所屬分類: 數據庫

          hibernate本身不具備插入批量數據的能力,因此開發中盡量少用。
          下面是一個測試例子:
          public void testadd(){
                  Session session
          =
          HibernateUtils.getSession();
                  Transaction tx
          =null
          ;
                      
          try
          {
                          tx
          =
          session.beginTransaction();
                          
          for(int i=0;i<2000;i++)
          {
                              Student stu
          =new
           Student();
                              stu.setName(
          "stu"+
          i);
                              stu.setAddr(
          "addr"+2*
          i);
                              session.save(stu);
                              
          //
          添加20條以后,強制入庫 
                              
          //
          clear()清空緩存
                              
          //
          postgres數據庫的隔離級別是已提交讀(Read committed),
                              
          //
          所以flush以后,數據看不到,只有commit后才能看到數據,
                              
          //如果失敗,rollback,前面的flush的數據不會入庫

                              if(i%20==0)
                                  session.flush();
                                  session.clear();
                              }

                          }

                        tx.commit();
                          
                      }
          catch(Exception ex){
                          ex.printStackTrace();
                          tx.rollback();
                      }
          finally
          {
                      HibernateUtils.closeSession(session);
                      }


              }

          我使用的數據庫是postgres,通過flush把數據強制入庫,然后通過session.clear()清空緩存中的實體對象,防止jvm內存溢出,速度還行。
          不過沒有大批量的添加,如果大批量的添加可能要考慮使用JDBC,還不行的話,估計得使用的數據庫本身自帶的快速導入工具.還不行的話,沒話說,換數據庫,哈哈。

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


          網站導航:
           
          主站蜘蛛池模板: 固原市| 汉沽区| 保亭| 兴安县| 新蔡县| 车险| 鲜城| 平果县| 乌兰浩特市| 阳原县| 无锡市| 枣庄市| 鄂州市| 云林县| 上饶县| 博罗县| 磴口县| 进贤县| 嘉善县| 鄂托克前旗| 上饶县| 临海市| 克什克腾旗| 太仆寺旗| 闻喜县| 米脂县| 濮阳县| 广水市| 徐水县| 鹤壁市| 金湖县| 策勒县| 炎陵县| 镇巴县| 苍山县| 绥江县| 西丰县| 永新县| 长垣县| 南溪县| 昌江|