Java Spring事务使用及验证过程详解

网友投稿 235 2023-02-16

Java Spring事务使用及验证过程详解

事务,只要是为了保证数据的原子性。避免出现脏数据。

下面来讲解下spring是如何使用事务的。

1.配置事务。这里采用的是注解的模式

class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >

class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >

2.配置就基本搞定了,然后就是在service或者service的方法上使用@Transactional定义是否需要是否管理就行了。

@Transactional

@Override

public String userInfoData(String id) {

// TODO Auto-generhttp://ated method stub

System.out.print("调用 dao层方法");

UserInfo arr = loginDao.getUser(1);

System.out.println("arr id = "+ arr.getId());

System.out.println("arr Username = "+ arr.getUsername());

MoneyInfo money = moneyDao.getmoney(1);

moneyDao.InsertMony(500);

loginDao.InsertUser(3, "Tigger");

System.out.println("money = "+ money.getMoney());

System.out.println("money += "+ money.getMoney());

Logger log = Logger.getLogger(UserServiceImpl.class);

log.info("执行了m01...");

//1.mybatis 的自己调用方法

/* try {

mybatisTest();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}*/

//2.spring + mybatis整合后的调用

return null;

}

以上就基本可以搞定了,验证配置是否成功的话,可以在不加注解的时候插入两条数据,后面一条数据是会报错的。

如果不使用事务的话,会发现第一条插入成功到DB里去了,然后在插入第二条的时候,程序报错。

如果这里使用@Transactional 开启事务,那么会发现两条数据都插入不了,直接报错了,这里事务就成功的启用了起来。

@Transactional

(1)这里说明一下,有的把这个注解放在类名称上面了,这样你配置的这个@Transactional 对这个类中的所有public方法都起作用.

(2)@Transactional 方法方法名上,只对这个方法有作用,同样必须是public的方法

(3) 数据库引擎要支持事务,如果是mysql,注意表要使用支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring Cloud Gateway(读取、修改 Request Body)的操作
下一篇:解决Spring Cloud Gateway获取body内容,不影响GET请求的操作
相关文章

 发表评论

暂时没有评论,来抢沙发吧~