事务注解transaction注解是spring框架的。
通过观察源码,可知transaction的属性:
- value:事务管理器
- propagation 传播行为,默认不存在事务则新建,否则添加到已有事务
- isolation 隔离级别
- readOnly 是否读写
- timeout 超时时间设置
其中,
isolation :隔离级别如下:
- org.springframework.transaction.annotation.Isolation.READ_UNCOMMITTED: 允许脏读
- org.springframework.transaction.annotation.Isolation.READ_COMMITTED: 只能读取到已经提交的数据
- org.springframework.transaction.annotation.Isolation.REPEATABLE_READ: 可重复读
- org.springframework.transaction.annotation.Isolation.SERIALIZABLE: 串行化读,读写相互阻塞
readonly:只有一次查询,不用加,两次以上要加,防止第二次查询和第一次查询结果不一样。
timeout :所谓事务超时,就是指一个事务所允许执行的最长时间,如果超过该时间限制但事务还没有完成,则自动回滚事务。在 TransactionDefinition 中以 int 的值来表示超时时间,其单位是秒。
默认设置为底层事务系统的超时值,如果底层数据库事务系统没有设置超时值,那么就是none,没有超时限制。