您的位置:首页 > 汽车 > 新车 > 产品设计排名_网络营销的特点分别是_软文营销是什么意思_网站免费制作

产品设计排名_网络营销的特点分别是_软文营销是什么意思_网站免费制作

2025/3/17 18:31:03 来源:https://blog.csdn.net/Kerwin_D/article/details/145500466  浏览:    关键词:产品设计排名_网络营销的特点分别是_软文营销是什么意思_网站免费制作
产品设计排名_网络营销的特点分别是_软文营销是什么意思_网站免费制作

什么是事务呢?

  • Spring 事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,Spring 是无法提供事务功能的。Spring 只提供统一事务管理接口,具体实现都是由各数据库自己实现,数据库事务的提交和回滚是通过数据库自己的事务机制实现。

Spring中事务有哪些种类呢?

  • 在Spring中,事务管理可以分为两大类:声明式事务管理和编程式事务管理

简单介绍下编程式事务管理

  • 编程式事务可以使用 TransactionTemplate 和 PlatformTransactionManager 来实现,需要显式执行事务。允许我们在代码中直接控制事务的边界,通过编程方式明确指定事务的开始、提交和回滚。

    public class AccountService {private TransactionTemplate transactionTemplate;public void setTransactionTemplate(TransactionTemplate transactionTemplate) {this.transactionTemplate = transactionTemplate;}public void transfer(final String out, final String in, final Double money) {transactionTemplate.execute(new TransactionCallbackWithoutResult() {@Overrideprotected void doInTransactionWithoutResult(TransactionStatus status) {// 转出accountDao.outMoney(out, money);// 转入accountDao.inMoney(in, money);}});}
    }
    

    在上面的代码中,我们使用了 TransactionTemplate 来实现编程式事务,通过 execute 方法来执行事务,这样就可以在方法内部实现事务的控制。

接下来介绍下声明式事务管理吧

  • 声明式事务是建立在 AOP 之上的。其本质是通过 AOP 功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前启动一个事务,在目标方法执行完之后根据执行情况提交或者回滚事务。

    相比较编程式事务,优点是不需要在业务逻辑代码中掺杂事务管理的代码,Spring 推荐通过 @Transactional 注解的方式来实现声明式事务管理,也是日常开发中最常用的。

    不足的地方是,声明式事务管理最细粒度只能作用到方法级别,无法像编程式事务那样可以作用到代码块级别。

    @Service
    public class AccountService {@Autowiredprivate AccountDao accountDao;@Transactionalpublic void transfer(String out, String in, Double money) {// 转出accountDao.outMoney(out, money);// 转入accountDao.inMoney(in, money);}
    }
    

那么二者的区别是什么呢?

  • 编程式事务管理:需要在代码中显式调用事务管理的 API 来控制事务的边界,比较灵活,但是代码侵入性较强,不够优雅。
  • 声明式事务管理:这种方式使用 Spring 的 AOP 来声明事务,将事务管理代码从业务代码中分离出来。优点是代码简洁,易于维护。但缺点是不够灵活,只能在预定义的方法上使用事务。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com