关于事务的一些问题,求帮忙,感谢~
Session session = getHibernateTemplate().getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
int count = 0;
try{
for(int i=0;i<data.size();i++){
try{
session.save((TbRawData)data.get(i));
count++;
}catch(HibernateException e){
e.printStackTrace();
}
System.out.println("id:"+count);
if(i%1000==0){
session.flush();
session.clear();
}
}
tx.commit();
}catch(HibernateException e){
tx.rollback();
e.printStackTrace();
}finally{
session.close();
}
return count;
是这样的,由于效率问题,我想批量把数据插入数据库,但是这样的话如果一条数据有问题,那么全部都会rollback,现在是想让有错的数据不管,其他的照常插入,请问下session.save后抛出异常,怎么把这个搞掉,然后flush的时候不报错呢?? --------------------编程问答-------------------- 急啊~ --------------------编程问答-------------------- 把 try catch 的范围缩小 --------------------编程问答-------------------- ??怎么缩小法? --------------------编程问答-------------------- 没人回答一下吗? --------------------编程问答-------------------- 继续顶~!!!! --------------------编程问答-------------------- 异常处理机制你不懂吗? --------------------编程问答--------------------
异常处理机制你不懂吗?
??怎么缩小法?
把 try catch 的范围缩小
Session session = getHibernateTemplate().getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
int count = 0;
try{
for(int i=0;i<data.size();i++){
try{
session.save((TbRawData)data.get(i));
count++;
}catch(HibernateException e){
e.printStackTrace();
}
System.out.println("id:"+count);
if(i%1000==0){
session.flush();
session.clear();
}
}
tx.commit();
}catch(HibernateException e){
tx.rollback();
e.printStackTrace();
}finally{
session.close();
}
return count;
是这样的,由于效率问题,我想批量把数据插入数据库,但是这样的话如果一条数据有问题,那么全部都会rollback,现在是想让有错的数据不管,其他的照常插入,请问下session.save后抛出异常,怎么把这个搞掉,然后flush的时候不报错呢??
先说你这个循环调用save方法,这不是批量操作。
去掉事务控制,让它自动提交,就可以了。 --------------------编程问答-------------------- 那你还事务个毛啊,事务就是想让一条数据出错其他操作就统一回滚,你不要这个功能还用毛事务啊?亲! --------------------编程问答-------------------- 楼主是这样的需求还用事务干嘛?不解,难道你插单条记录的时候会出现某某字段插入不成功的情况,无语
补充:Java , Web 开发