Spring支持两种类型的事务管理:
编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
Spring事务的实现方式和实现原理
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的
事务传播行为类型 | 说明 |
---|---|
PROPAGATION_REQUIRED | 有事务就加入,否则就自己新建一个 |
PROPAGATION_SUPPORTS | 有事务就加入,没有就算了,以非事务方式执行,不强求 |
PROPAGATION_MANDATORY | 必须有事务,否则就抛异常闹事情 |
PROPAGATION_REQUIRES_NEW | 新建事务,别的事务都扔一边,相互独立,互不干扰 |
PROPAGATION_NOT_SUPPORTED | 不要事务,如果存在则挂起扔一边 |
PROPAGATION_NEVER | 必须没有事务,否则就抛异常闹事。 |
PROPAGATION_NESTED | 属于外围事务方法的子事务,外围主事务回滚,子事务一定回滚,而内部子事务可以单独回滚而不影响外围主事务和其他子事务。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。 |