Hebernate-hql 插入一条 和 批量插入多条记录

时间:2021-06-08 00:25:36

插入一条 和 批量插入多条记录

注意关闭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();
}