B2B2C商城系统之事务的处理

  • 来源:网络
  • 更新日期:2020-07-29

摘要: 易写科技选择Spring的编程式事务来控制事务。 在Spring中管理事务有2种方式,一种是编程式事务,一种是声明式事务,编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实

易写科技选择Spring的编程式事务来控制事务。

在Spring中管理事务有2种方式,一种是编程式事务,一种是声明式事务,编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。声明式的事务建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

1.选择编程式事务管理还是声明式事务管理:

当你只有很少的事务操作时,编程式事务管理通常比较合适。例如,如果你有一个Web应用,其中只有特定的更新操作有事务要求,你可能不愿使用Spring或其他技术设置事务代理。这种情况下,使用
TransactionTemplate
可能是个好办法。

只有编程式事务管理才能显式的设置事务名称和事务的传播特性,所有编程式事务更加灵活。

事务的7种传播特性:

1.PROPAGATION_REQUIRED
如果存在一个事务、则支持当前事务。如果没有事务则开启。

2.PROPAGATION_SUPPORTS
如果存在一个事务、则支持当前事务。如果没有事务则非事务执行。

3.PROPAGATION_MANDATORY
如果已经存在一个事务、则支持当前事务。如果没有活动事务则抛出异常。

4.PROPAGATION_REQUIRES_NEW
总是开启一个新的事务、如果已经存在一个事务、则将这个事务挂起。

5.PROPAGATION_NOT_SUPPORTED
总是非事务执行、并挂起任何存在的事务。

6.PROPAGATION_NEVER
总是非事务执行、如果存在一个活动事务则抛出异常。

7.PROPAGATION_NESTED
果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。

如果你的应用中存在大量事务操作,那么声明式事务管理通常是值得的。它将事务管理与业务逻辑分离,而且在Spring中配置也不难。但是我们的开发中,一般使用到事务的地方比较少,尤其是商城系统读的操作会非常多。用到事务的地方也就那么几个地方,使用声明式事务,对速度要求较高的商城系统中。反而会带来性能问题。所以易写科技 java商城系统采用Spring的编程式事务来处理事务,下图项目中取消订单代码的截图,请查看:


新网企业建站