您的位置:首页 > 编程语言 > Java开发

spring 管理 jdbc 事务

2014-09-27 17:27 302 查看
@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
事务传播特性

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: