spring 管理 jdbc 事务

  • @Transactional    业务实现类 类名上方--这个类中的方法,执行操作前会打开事务。

          默认:RuntimeException 自动回滚, 可以try  catch 的异常,不会滚

                      方法名上方  就可以指定RuntimeException  uncheck例外也不会滚  参数是noRollbackFor=RuntimeException.class

                                                           同理也可以让让 Exception check例外强制回滚  参数是 rollbackFor=Exception.class

                      有一些方法不需要事务控制 如 query方法,可以在方法的注解里指定参数propagation=NOT_SUPPORTED,不参与事务

                      一般  save  update  默认都是REQUIRED 即如果已经存在事务环境则加入到事务当中,如果不存在事务环境,则新开启一个事务。

                           

@Transactional

public class   PersonServiceImpl{

         private  JdbcTemplate  jdbcTemplate;

         public void setDataSource(DataSource dataSource){

                 this.jdbcTemplate=new JdbcTemplate(dataSource);

        }

        @Transactional(noRollbackFor=RuntimeException.class)

        public  void delete(){

                jdbcTemplate.delete(1);

         }

}

hibernate 中的getCurrentSession()得到的是受spring 容易管理的session,受spring事务管理。

而openSession()不受spring业务bean的事务管理

关于什么时候回滚,什么时候不会滚在spring中的设置:http://blog.csdn.net/qiutian1990/article/details/7940032

http://peng-hao1988.iteye.com/blog/1424214

事务传播特性

原文地址:https://www.cnblogs.com/qq-757617012/p/3996926.html