Spring事务的传播行为、隔离级别、回滚、只读和过期
事务的传播性 - 当事务的方法被另一个事务的方法调用时,必须指定事务应该如何传播。如:方法可能继续在现有的事务中运行,也可能开启一个新的事务,并在自己的事务中运行。 - 事务的传播行为可以由传播属性指定。Spring定义了7种传播行为: required:如果有事务在运行,当前的方法就在这个事务内运行,否则就开启一个新的事务,并在自己的事务内运行(常用) required_new:当前的方法必须启动新事务,并在它自己的事务内运行。如果有事务在运行,应该将其挂起。(常用) supports:如果有事务在运行,当前这个方法就在这个事务内运行,否则它可以不运行在事务中 not_supported:当前的方法不应该运行在事务中,如果有运行的事务则将其挂起 mandatory:当前的方法必须运行在事务内,如果没有正在运行的事务,则抛出异常 never:当前方法不应该运行在事务中,如果有运行的事务,则抛出异常 nested:如果有事务在运行,当前方法就应该在这个事务的嵌套是事务内运行,否则就启动一个新的事务,并在自己的事务内运行 required传播行为:使用调用者的事务 requires_new传播行为:表示该方法必须启动一个新事务,并在自己的事务内运行,如果有事务在运行就先挂起它。 隔离级别、回滚、只读和过期 - 当同一个应用程序或不同应用程序中的多个事务在同一个数据集上并发执行的时候