1. 程式人生 > >Hebernate-hql 插入一條 和 批量插入多條記錄

Hebernate-hql 插入一條 和 批量插入多條記錄

插入一條 和 批量插入多條記錄

注意關閉session的二級快取:
hibernate.cfg.xml 中設定

 <property name="hibernate.cache.use_second_level_cache">false</property>  
//插入一條記錄
    public void testcaseInsert(Testcasebpel t){
        Session session = getSession();
        Transaction tran = session.beginTransaction();
        session.save(t);    //執行
tran.commit(); //提交 session.close(); } //批量插入,此處是插入一個Map public void testcaseInterAll(Map<Testpathbpel, ArrayList> testCaseListMap){ Session session = getSession(); Transaction tran = getSession().beginTransaction(); int i=0; boolean
flag = false; //記錄要插入的資料是否超過20條 if(testCaseListMap.size()>20){ flag = true; } for (Map.Entry<Testpathbpel, ArrayList> en: testCaseListMap.entrySet()) { ArrayList list = en.getValue(); for (Object obj : list) { String str =(String)obj; //得到測試路徑對應的id
Testpathbpel tpath = en.getKey(); //插入測試用例 Testcasebpel tcase = new Testcasebpel(); tcase.setTestpathbpel(tpath); tcase.setTestcase("("+str+")"); session.save(tcase); //執行 i++; //手動將Session處的快取資料寫入資料庫,並手動提交事務 if (i % 20 == 0){ //超過20條,每20條提交1次,注意要關閉session的二級快取 session.flush(); session.clear(); tran.commit(); tran = session.beginTransaction(); } } } if(flag == false) //未超過20條,最後提交1次 tran.commit(); session.close(); }