做网站创业故事,网站建设环境软件有哪些,jsp网站安全性,买完域名后怎么做网站事务传播机制就像是一个指挥家#xff0c;控制着程序中的各种操作#xff08;比如修改数据库#xff09;何时开始、何时结束#xff0c;以及如何处理错误。 保证数据一致性#xff1a;想象一下你在网上购物#xff0c;你需要先从银行账户扣款#xff0c;然后再把商品加入…
事务传播机制就像是一个指挥家控制着程序中的各种操作比如修改数据库何时开始、何时结束以及如何处理错误。 保证数据一致性想象一下你在网上购物你需要先从银行账户扣款然后再把商品加入你的购物车。这两步操作必须都成功或者都不成功。如果只有一步成功那么就会出现问题比如钱被扣了但商品没有到购物车。事务就是用来保证这两步操作要么都成功要么都失败。 处理复杂的业务逻辑有时候一个大的操作可能包含很多小的操作。比如一个大的操作是完成一次旅行这可能包括订机票、订酒店、租车等小的操作。这些小的操作可能需要单独完成比如你可能想要先订好机票再去订酒店。事务传播机制就可以帮助我们按照我们想要的方式完成这些操作。 提高性能有些操作可能不需要事务比如查看商品信息。在这种情况下我们可以避免使用事务这样可以让程序运行得更快。 提高可维护性事务传播机制可以让我们更好地理解和控制程序中的操作这样在出现问题的时候我们可以更容易地找出问题的原因并修复它。 PROPAGATION_REQUIRED这是默认的事务传播行为。如果在开始当前方法之前一个事务上下文已经存在那么该方法将在已经存在的事务中运行。否则它将启动一个新的事务。在一个典型的场景中所有的事务方法都会运行在一个共享的事务上下文中这样可以保证所有的方法或者操作都是在同一个事务中完成。 PROPAGATION_SUPPORTS如果在开始当前方法之前一个事务上下文已经存在该方法将在这个事务中运行。否则它可以以非事务方式运行如果没有事务就按非事务方式运行不会新建事务。这种传播行为允许方法不需要事务上下文也能执行。 PROPAGATION_MANDATORY如果已经存在一个事务继续使用这个事务如果没有一个活动的事务则抛出异常。这种传播行为强制方法必须在一个已经存在的事务上下文中运行。 PROPAGATION_REQUIRES_NEW每次都会新建一个新的事务如果一个事务已经存在将这个存在的事务挂起暂停并且启动一个新的事务。这种传播行为允许方法在它自己的事务上下文中运行独立于它被调用的环境。 PROPAGATION_NOT_SUPPORTED总是非事务地执行方法如果一个事务存在将其挂起。这种传播行为允许方法在没有事务的上下文中运行即使一个事务已经存在。 PROPAGATION_NEVER总是非事务地执行如果存在一个事务则抛出异常。这种传播行为强制方法在没有事务的上下文中运行如果已经存在一个事务将会抛出一个异常。 PROPAGATION_NESTED如果一个事务存在那么它应该在一个嵌套的事务中运行这个嵌套的事务可以独立于封装事务进行提交或者回滚。如果没有一个活动的事务则按PROPAGATION_REQUIRED属性执行。这种传播行为允许一个事务中的方法在独立的内部事务中运行。 简化版尝试以更简单的方式来解释这些事务传播行为 REQUIRED需要如果已经有事务了我就加入这个事务如果没有我就新建一个事务。 SUPPORTS支持如果已经有事务了我就加入这个事务如果没有那我就不用事务。 MANDATORY必须我必须要有事务才能工作如果没有事务我就报错。 REQUIRES_NEW需要新的我需要一个全新的事务如果已经有事务了把它暂停我要新建一个事务。 NOT_SUPPORTED不支持我不需要事务如果有事务就把它暂停。 NEVER永不我永远不需要事务如果有事务我就报错。 NESTED嵌套如果有事务我就在当前事务中创建一个嵌套事务这个嵌套事务是独立的可以先于当前事务提交或回滚。如果没有事务我就新建一个事务。 今天的分享结束了希望你能有所收获拜拜