Spring事务详解 深入解析Spring的事务机制(3)
导读:Spring事务详解,事务超时 timeout 指定事务的超时时间,默认为-1(永远不会超时回滚),指定后超过时间会自动回滚。 注意事项:同类方法自调用会让 AOP 的代理模式失效
Spring事务详解
事务超时
timeout 指定事务的超时时间,默认为-1(永远不会超时回滚),指定后超过时间会自动回滚。
注意事项:同类方法自调用会让 AOP 的代理模式失效。因此事务会失效。
其他补充
- 事务的基本概念:
- 事务是一组操作,被视为一个不可分割的工作单元,要么全部执行成功,要么全部失败回滚。
- Spring 通过
PlatformTransactionManager接口实现事务管理,支持不同的事务管理器,如 JDBC、Hibernate、JTA 等。
- 隔离级别(Isolation Levels):
DEFAULT: 使用数据库默认的隔离级别。READ_UNCOMMITTED: 允许读取尚未提交的更改。READ_COMMITTED: 允许只读取已提交的更改。REPEATABLE_READ: 对相同字段的多次读取返回相同的结果,除非进行更新操作。SERIALIZABLE: 最高的隔离级别,确保事务之间完全隔离。- 事务隔离级别定义了一个事务可能受其他并发事务影响的程度。
- Spring 支持数据库的四种隔离级别:
- 传播行为(Propagation Behavior):
- 事务传播行为定义了方法在一个事务内执行时,如果有另一个事务存在,应该如何处理。
- 例如,
REQUIRED表示如果当前存在事务,则加入该事务,否则创建一个新的事务。 - 一些传播行为:
REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。
- 超时时间(Timeout):
- 超时时间定义了事务的最大执行时间。如果事务执行时间超过设定的超时时间,将被强制回滚。
- 超时时间通过
@Transactional注解的timeout属性设置,单位是秒。
- 回滚规则(Rollback Rules):
- 回滚规则定义了哪些异常触发事务回滚。可以通过
@Transactional注解的rollbackFor和noRollbackFor属性进行设置。 rollbackFor指定哪些异常触发回滚,noRollbackFor指定哪些异常不触发回滚。
- 回滚规则定义了哪些异常触发事务回滚。可以通过
- 是否只读(Read-Only):
- 设置事务是否为只读可以提高性能,因为只读事务不需要写入操作的事务支持。
- 可以通过
@Transactional注解的readOnly属性设置,表明事务是否为只读事务。
示例:
@Transactional(
isolation = Isolation.READ_COMMITTED,
propagation = Propagation.REQUIRED,
timeout = 30,
rollbackFor = {SQLException.class},
readOnly = true
)
public void myTransactionalMethod() {
// 事务处理逻辑
}
相关阅读
-
网络错误代码101是什么意思 打开网站错误代码101解决办法
文章摘要:网络错误代码101是什么意思和打开网站错误代码101解决办法的相关知识,下面IT袋为您详细介绍 steam是一款受众非常广的游戏平台,最近上新的好游十分的多。但是最近有许多的玩家
-
web服务器怎么配置 免费个人web服务器推荐
对于许多网友来说web服务器怎么配置和免费个人web服务器推荐方面的内容,具体详情如下: 回想一下一个http请求的过程,你在浏览器输入xxx.com,经过域名解析 发起tcp的3次握手 建立tcp连接后
-
用户输入网址到看到内容之间的过程
对于许多网友来说用户输入网址到看到内容之间的过程的内容,相关内容具体如下: DNS解析: 浏览器首先会检查网址中的域名部分(例如,www.xxxxx.com)。 浏览器会向本地DNS缓存查询,如果之
-
Python列表基础详解 深入解析Python列表的基础知识
今天带来的IT技巧小经验Python列表基础详解的话题,一定能解决您的问题的,一起来了解吧! 在Python中,列表是一种有序的、可变的数据结构,用于存储多个值。 列表可以包含各种类型的元素


