• 捕获RuntimeException
  • 捕获Error
  • 并不捕获Checked Exception

在方法中使用@Transcational注解时候,通过throw new Exception(),在发生异常的时候不会进行回滚,可以使用throw new RuntimeException();

也可以使用@Transactional(rollbackForClassName="Exception")来设置回滚触发的异常类型。

事物传播行为介绍: 

  @Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
  @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务
  @Transactional(propagation=Propagation.REQUIRES_NEW) :不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
  @Transactional(propagation=Propagation.MANDATORY) :必须在一个已有的事务中执行,否则抛出异常
  @Transactional(propagation=Propagation.NEVER) :必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
  @Transactional(propagation=Propagation.SUPPORTS) :如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.

事物超时设置:

  @Transactional(timeout=30) //默认是30秒

事务隔离级别:

  @Transactional(isolation = Isolation.READ_UNCOMMITTED):读取未提交数据(会出现脏读, 不可重复读) 基本不使用
  @Transactional(isolation = Isolation.READ_COMMITTED):读取已提交数据(会出现不可重复读和幻读)
  @Transactional(isolation = Isolation.REPEATABLE_READ):可重复读(会出现幻读)
  @Transactional(isolation = Isolation.SERIALIZABLE):串行化

  MYSQL: 默认为REPEATABLE_READ级别
  SQLSERVER: 默认为READ_COMMITTED

脏读 : 一个事务读取到另一事务未提交的更新数据
不可重复读 : 在同一事务中, 多次读取同一数据返回的结果有所不同, 换句话说, 
后续读取可以读到另一事务已提交的更新数据. 相反, "可重复读"在同一事务中多次
读取数据时, 能够保证所读数据一样, 也就是后续读取不能读到另一事务已提交的更新数据
幻读 : 一个事务读到另一个事务已提交的insert数据

最新文章

  1. 查看SQLserver编码格式的SQL语句
  2. 渗透杂记-2013-07-13 Windows XP SP2-SP3 / Windows Vista SP0 / IE 7
  3. 关于在终端运行rosrun时找不到对应的包的解决方法
  4. Git使用方法
  5. struts2&&Hibernate Demo1
  6. C#与数据库访问技术总结(九)之实例
  7. Mac下MySQL卸载方法 转载
  8. CI 框架中的自定义路由规则
  9. jquery返回顶部特效
  10. VisualStudio自定义代码段_方法二
  11. Nhibernate Icreteria 分页查询
  12. 解决 SQL Server 耗尽内存的情况
  13. 动态改变ComboBox下拉框的宽度
  14. yii中数据模型的使用
  15. 2016青岛网络赛 Sort
  16. eclipse 中 导入git项目无法导入的问题
  17. C# Hashtable
  18. C++解析七-重载运算符和重载函数
  19. 第一篇:打造专属开发工具Eclipse篇
  20. ActiveMQ两种模式PTP和PUB/SUB<转>

热门文章

  1. OBD Problem Vehicles
  2. C#中继承和构造函数
  3. Smart3d 近景摄影测量与航空摄影测量
  4. 使用GeoServer+OpenLayers发布和调用WMTS、Vector Tile矢量切片服务 | Publishing and Calling WMTS, Vector Tile Service Using GeoServer + OpenLayers
  5. servlet及xml文件处理流程
  6. linux help
  7. HBase介绍(3)---框架结构及流程
  8. 详解C#中的反射(转发)
  9. Linux中Consul集群部署
  10. 如何为 smartraiden 贡献代码