`
牛人云小白
  • 浏览: 3217 次
文章分类
社区版块
存档分类
最新评论
阅读更多
转载自 WYhack

//注解方式声明事务,该事务声明的范围是service中的方法,而一般的事务声明时不是声明在//业务逻辑方法上的,而是声明在单一的数据库操作方法上的
@Transactional
public class UserServiceImpl implements UserService{

private JdbcTemplate jdbcTemplate;

@Override
/*
* 事务默认情况下如果方法抛出unchecked异常,则事务回滚,如果抛出的是checked异常,则事务不回滚
* 如果想要让方法抛出checked异常时也回,则可以按照下面的方法
* @Transactional(rollbackFor=Exception.class)
* 也可以指定unchecked异常不进行回滚
* @Transactional(noRollbackFor=RuntimeException.class)
*/
@Transactional(rollbackFor=Exception.class)
public void delete(int userid) throws Exception{
// TODO Auto-generated method stub
jdbcTemplate.update("delete user where id=?",new Object[]{userid},
new int[]{java.sql.Types.INTEGER});
throw new Exception("hello");
}
}

对于在类前用@Transactional声明的事务,则类中所有的方法都被声明了事务,
而@Transactional声明后默认情况下,所有方法如果抛出的是unchecked异常,

也即RuntimeException,则事务回滚,如果抛出的是checked异常,即Exception,则事务不回滚
因此如果想让方法在抛出checked异常时也回滚,

则可以在方法前加上这样的注释
@Transactional(rollbackFor=Exception.class),这样则表示该方法抛出checked异常时也回滚,

当然也可以让方法抛出unchecked异常不进行回滚,
只需要在方法前面加上注释
@Transactional(noRollbackFor=RuntimeException.class)即可
分享到:
评论

相关推荐

    sql精华笔记(转载)

    ROLLBACK TRANSACTION [transaction_name] ``` **注意**:如果省略 `transaction_name`,则回滚到最近未命名的事务开始点。 ### SQL基础知识 除了事务处理外,了解基本的SQL语言结构也是非常必要的。接下来将介绍...

    《转载》oracle1000问

    - TCL(Transaction Control Language):用于管理事务,如COMMIT、ROLLBACK等。 - DCL(Data Control Language):用于权限管理,如GRANT、REVOKE等。 3. **PL/SQL**: - Oracle的Procedural Language/...

    说一说drop、delete与truncate的区别

    Delete用来删除表的全部或者一部分数据行,执行delete之后,用户需要提交(commmit)或者回滚(rollback)来执行删除或者撤销删除。会触发这个表上所有的delete触发器 Truncate删除表中的所有数据,这个操作不能回滚,也...

    php函数大全 word版本

    `odbc_commit` 提交事务,`odbc_do` 直接执行SQL,`odbc_exec` 执行非预编译的SQL,`odbc_execute` 执行预编译的SQL,`odbc_free_result` 释放结果集内存,`odbc_prepare` 预编译SQL,`odbc_rollback` 回滚事务。...

    jdbc连接数据库的方式2

    三、以下列出了在使用JDBC来连接Oracle数据库时可以使用的一些技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能(系转载)。  1、在客户端软件开发中使用Thin驱动程序  在开发Java软件方面,Oracle...

    python3.7 使用pymssql往sqlserver插入数据的方法

    如果在执行过程中发生异常,会触发except部分的代码,此时会调用connection.rollback()方法来回滚事务,防止数据被错误地插入。最后,通过关闭游标和连接来释放资源,并确保数据库连接被正确关闭。 以上就是使用...

Global site tag (gtag.js) - Google Analytics