元素属性表
属性 | 是否必须 | 默认值 | 描述 |
---|---|---|---|
name | 是 | 与事务属性关联的方法名,可以使用通配符 | 如get*,update* |
oropagation | 否 | REQURIED | 事务传播行为,可选值REQUIRED,SUPPORTS,MANDATORY,REQURIES_NEW,NOT_SUPPORTED,NEVER,NESTED |
ISOLATION | 否 | DEFAULT | 事务隔离级别,可选的值DEFAULT,READ_UNCOMMITTED,READ_COMMITTED,REPEATABLE_READ,SERIALIZABLE |
timeout | 否 | -1 | 事务超时的时间(以秒为单位),如果设置为-1,事务超时的时间由底层的事务系统决定 |
read-only | 否 | false | 事务是否只读 |
rollback-for | 否 | 所有运行期异常回滚 | 触发事务回滚的Exception ,用异常名称的片段进行匹配,可以设置多个,以逗号隔开,如’Exception1 ,Exception2’ |
no-rollback-for | 否 | 所有检查异常类型不会滚 | 不触发事务回滚的Exception,用异常名称的片段进行匹配,可以设置多个,如’Exception1 ,Exception2’ |
事务传播行为
行为 | 属性 |
---|---|
PROPAGATION_REQUIRED | 如果没有使用事务,就新建一个事务;如果已经使用事务,就加入到这个事务中。这是最常见的选择 |
PROPAGATION_SUPPORTS | 支持当前事务,如果当前没有事务,就以非事务的方式执行。 |
PROPAGATION_MANDATORY | 使用当前事务,如果当前没有事务,就抛出异常 |
PROPAGATION_REQUIRES_NEW | 新建事务,如果当前存在事务,就把该事务挂起 |
PROPAGATION_NOT_SUPPORTED | 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起 |
PROPAGATION_NEVER | 以非事务的方式执行操作,如果当前存在事务,则抛出异常 |
PROPAGATION_NESTED | 如果当前存在事务,则在嵌套事务内执行,如果没有事务,就执行与PROPAGATION_REQUIRED 类似的操作 |
隔离级别
隔离级别 | 脏读 | 不可重复读 | 幻读 | 第一类丢失更新 | 第二类丢失更新 |
---|---|---|---|---|---|
READ_UNCOMMITED | 允许 | 允许 | 允许 | 不允许 | 允许 |
READ_COMMITED | 不允许 | 允许 | 允许 | 不允许 | 允许 |
REPEATABLE READ | 不允许 | 不允许 | 允许 | 不允许 | 不允许 |
SERIALIZABLE | 不允许 | 不允许 | 不允许 | 不允许 | 不允许 |