日期:2014-05-19  浏览次数:20656 次

求个事物回滚的方法或思路(不用spring和hibernate框架)
如题:类似代码:
try{
  Connection con=****;//数据库连接
  dao.addEmployee(Employee,con);//添加员工,具体方法略
  String a=null; a.trim();//手动写个异常
}catch(Exception e){
  con.rollback();
}
我这样写事物没有回滚,,数据库里还是添加了数据,求个解决思路,当添加数据的方法后面有错时,让它事物回滚,

(换个例子:我用for循环添加记录,当执行到某次时报异常,则让事物回滚,清理前面添加的数据)
当然也希望赐教下各类不同的事物回滚,包括spring框架等

------解决方案--------------------
先关闭自动提交
con.setAutoCommit(false);

然后再你需要提交的地方con.commit();
需要回滚的地方con.rollback();
------解决方案--------------------
LZ 其实spring和hibernate等框架就是对事物进行了良好的封装,更好的去处理了这些问题。但是他们的处理问题的主要来源还是在JDK上的。
我就说说我愚建吧。也是我对这些事物的理解吧。如果大家有很好的理解,其大家分享一下。
其实他们主要是在Connecion入手,在connection中有两方法为回滚void rollback()、rollback(Savepoint savepoint),一般我们都是用第一种,但是spring等框架肯定是用第二种,因为在第二种中会对保存的东西进行记录,到发生异常的时候,你可以指定回到那个保存点。
在Connection中有setSavepoint(),setSavepoint(String name)两方法,用来对保存点进行记录。它还提供了releaseSavepoint(Savepoint savepoint)移动保存点的位置。
将这些提供的方法或是对象进行操作而言。
如果有说错的,请包涵
 
------解决方案--------------------
con.setAutoCommit(false);

try{
con.commit()
}catch(Exception){
con.rollback();
}finnly{

}
------解决方案--------------------
要先把autoCommit设为false才算是自主事务管理啊,你这样写,每个add语句就是一个单独的事务,当然没有效果