java代码执行回滚 java手动回滚

java spring 有没有方法可以回滚事物

你好,在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例

播州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

比如配置文件里有这么条记录:

bean id="dataSource" class="xxx"  

property name="xxx" value="xxx"/  

property name="xxx" value="xxx"/   

property name="defaultAutoCommit" value="true" /  

/bean

情况1:如果没有在程序中手动捕获异常

@Transactional(rollbackFor = { Exception.class })  

public void test() throws Exception {  

doDbStuff1();  

doDbStuff2();//假如这个操作数据库的方法会抛出异常,现在方法doDbStuff1()对数据库的操作   会回滚。  

}

情况2:如果在程序中自己捕获了异常

@Transactional(rollbackFor = { Exception.class })  

public void test() {  

try {  

doDbStuff1();  

doDbStuff2();//假如这个操作数据库的方法会抛出异常,现在方法doDbStuff1()对数据库的操作  不会回滚。  

} catch (Exception e) {  

e.printStackTrace();     

}  

}

关声明式事务的配置不懂你可以问我,希望可以帮到你

java在交易过程服务器挂掉怎么回滚

java中交易操作可以在service层做事务,要提交一起提交,或者都不提交,如果服务器挂掉,那就是没有提交成功,不会有影响,都不操作就相当于回滚

java数据库编程中,回滚事务如何理解?

java数据库中存在事务的概念,最经典的例子的就是转账,张三给李四转账,那么首先要扣除张三的钱,然后加给李四,这整个过程不能分开操作,整个过程称为事务,那么如果现在张三扣除了钱,在转账给李四之前出现了异常,那么问题来了,现在转账动作做到一半,如果不回滚事务的话,那么就出现张三钱少了,但是李四没加钱,这是不允许的,所以出现了回滚事务的这一动作。这样好理解些么?

java 事务方法调用非事务函数会回滚吗

你测试一下就晓得了, 会回滚, 我做了测试

@Override

@Transactional(rollbackFor = Exception.class)

public void test() {

TbLog log = new TbLog();

log.setId("3");

log.setOperationContent("事物回滚测试:有回滚注解");

tbLogService.create(log);

test1();

}

private void test1(){

for (int i = 1; i 3 ; i++) {

if (i==2){

throw new RestClientException("事物回滚测试");

}

TbLog log = new TbLog();

log.setId(String.valueOf(i));

log.setOperationContent("事物回滚测试:没注解");

tbLogService.create(log);

}

}

下面这种配置了不回滚的类型就不会回滚

@Override

@Transactional(rollbackFor = Exception.class,noRollbackFor = RestClientException.class)

public void test() {

TbLog log = new TbLog();

log.setId("3");

log.setOperationContent("事物回滚测试:有回滚注解");

tbLogService.create(log);

test1();

}

private void test1(){

for (int i = 1; i 3 ; i++) {

if (i==2){

throw new RestClientException("事物回滚测试");

}

TbLog log = new TbLog();

log.setId(String.valueOf(i));

log.setOperationContent("事物回滚测试:没注解");

tbLogService.create(log);

}

}


当前文章:java代码执行回滚 java手动回滚
标题来源:http://scyanting.com/article/dodeccj.html