JavaEE中JDBC事务控制的疑问

请你看下面的一段伪代码try{//把事务设置为手动提交,自己控制事务ConnectionManager.manualCommitTransaction();//调用目标类... 请你看下面的一段伪代码

try {
// 把事务设置为手动提交,自己控制事务
ConnectionManager.manualCommitTransaction();

// 调用目标类的方法,向数据库插入数据
returnValue = method.invoke(targetObject, args);

// 一切操作成功,提交事务
ConnectionManager.commitTransaction();

} catch (Exception e) {
e.printStackTrace();
// 操作发生异常,回滚事务
ConnectionManager.rollbackTransaction();
}

如果调用目标类的方法失败,那么事务就不会提交,数据就不会
插入到数据库,那么我们的伪代码为什么还要写上
ConnectionManager.rollbackTransaction();
展开
 我来答
lexin_lyl
2011-10-10 · TA获得超过714个赞
知道小有建树答主
回答量:456
采纳率:0%
帮助的人:471万
展开全部
你就不理解事务处理的流程和处理方式,commit和rollback是一对互斥的处理,一个事务处理里面必须而且只能执行其中一个,成功的事务处理要commit,失败的要rollback
追问
我的意思是说发生异常了,如果不写ConnectionManager.rollbackTransaction();数据同样不会插入到数据库,那么我们的还要写上?
追答
我知道你的意思,可是你说的异常发生点是不可知道的,之前可能已经执行过很多的额sql语句了,然后发生异常了,你没有提交事务,但是数据库的一致性已经被破坏了,这时候必须整个事务撤销,所以就必须使用rollback,而不是你说的出现异常不提交就了事了,什么也不管,事务不是不提交就不会对数据库产生影响的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式