springboot jdbctemplate事务,spring支持对数据库的事务管理

  springboot jdbctemplate事务,spring支持对数据库的事务管理

  

目录

spring JdbcTemplate数据库事务管理1、spring中的事务管理2、事务管理API 3、使用事务管理1、配置文件2、在类上添加事务注释

 

  00-1010现在有一个账户表,里面存储了用户的金额。

  如果真的想做好转账,就需要使用交易,否则一有异常就会出现数据不一致等问题。

  Try {//第一步启动事务//第二步进行业务操作//第三步提交事务} catch(){ //第四步异常回滚事务}

  00-1010通常,事务被添加到服务层(业务逻辑层)。

  虽然在spring中管理事务可以通过两种方式实现:

  编程管理:就像上面的伪代码一样,用起来不方便。声明式管理:通过配置实现,推荐。其中,配置可以基于XML,也可以基于标注,显然更加方便。spring中进行声明式事务管理,底层原理是AOP。

  

spring JdbcTemplate数据库事务管理

spring提供了一个接口PlatformTransactionManager,它代表了事务管理器。这个接口为不同的框架提供了不同的实现类。

 

  使用idea工具扩展结构,使用jdbcTemplate使用DataSourceTransactionManager。

  

一、spring 中的事务管理

 

  00-1010创建事务管理器。

  bean id= transaction manager class= org . spring framework . JDBC . data source . datasourcetransactionmanager !-注入数据源-property name= data source ref= data source /property/bean以打开事务批注,使用命名空间tx。

  !-打开事务注释-tx 3360批注驱动的事务管理器=事务管理器/tx 3360批注驱动的

  00-1010 Comment @Transactional可以添加到服务类或方法中:

  添加到类中,指示该类下的所有方法都添加了事务。Add to方法,指示只有此方法添加事务。

  @ Service @ transactional public class UserService { @ auto wired private UserDao UserDao;//转移方法:public void account money(){//100 userdao . reduce money()大周少;//模拟异常int I=1/0;//小猫加100 userdao . addmoney();}}接口实现类UserDaoImpl。

  @Repositorypublic类UserDaoImpl实现UserDao { @ Autowired private JDBC template JDBC template;@ Override public void addMoney(){ String SQL= update t _ account set money=money?其中用户名=?;JdbcTemplate.update(sql,100,小猫);} @ Override public void reduce money(){ String SQL= update t _ account set money=money-?其中用户名=?;JdbcTemplate.update(sql,100,大周);}}在测试类中执行它:

  公共类Test trans { @ Test public void Test JDBC(){ application context context=new classpathmlaplicationcontext( bean 1 . XML );UserService UserService=context . getbean( UserService ,UserService . class);userservice . account money();}}注意我在上面的服务中手工添加了一个例外,所以执行后交易应该是回滚操作,2个人的金额仍然是每人1000。

  2021年8月07日10336039336057.com . Alibaba . druid . pool . druid data source info信息: { data source-1 } inited Java . lang . arithmetic exception 3360/by zero刷新数据表。

  现在我去掉服务类中的异常int I=1/0;重新执行测试方法:

  2021 . 08 . 07 10336047336001.com . Alibaba . druid . pool . druid data source info信息: {datasource-1}发起的以退出代码0结束的进程刷新数据表。

  结果是正确的。

  以上是spring学习JdbcTemplate数据库事务管理的详细内容。更多关于spring JdbcTemplate数据库事务的信息,请关注大众IT的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: