事务
为什么使用注解式声明式事物?
- 开发团队达成一致约定,明确标注事务方法的编程风格。
- 保证事务方法执行的时间尽可能短,不要穿插其他网络操作PRC/HTTP请求或者剥离到事务方法外部。
- 不是所有的方法都需要事务,如只有一条修改操作,只读操作不需要事务控制。
注意:开启事务,实际上就是关闭了自动提交的功能,改成了commit手动提交!
我们可以通过简单的对是否自动提交加以设置,完成开启事务的目的! set autocommit = 0;
事务的传播行为
PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW–新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED–以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER–以非事务方式执行,如果当前存在事务,则抛出异常。