重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
易写科技选择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的编程式事务来处理事务,下图项目中取消订单代码的截图,请查看: