您的位置:首页 > 其它

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

2016-12-05 20:33 417 查看

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

注意关闭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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: