Java Spring事務(wù)使用及驗(yàn)證過程詳解
事務(wù),只要是為了保證數(shù)據(jù)的原子性。避免出現(xiàn)臟數(shù)據(jù)。
下面來講解下spring是如何使用事務(wù)的。
1.配置事務(wù)。這里采用的是注解的模式
<!-- 配置事務(wù)管理器 ,如果你暫時(shí)未使用到事務(wù)可以不配置,次以下內(nèi)容均可以在不適用事務(wù)的情況下刪除 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > <property name="dataSource" ref="dataSource"/> </bean> <!-- 開啟事務(wù)行為 --> <tx:annotation-driven transaction-manager="transactionManager" />
2.配置就基本搞定了,然后就是在service或者service的方法上使用@Transactional定義是否需要是否管理就行了。
@Transactional
@Override
public String userInfoData(String id) {
// TODO Auto-generated method stub
System.out.print("調(diào)用 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("執(zhí)行了m01...");
//1.mybatis 的自己調(diào)用方法
/* try {
mybatisTest();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
//2.spring + mybatis整合后的調(diào)用
return null;
}
以上就基本可以搞定了,驗(yàn)證配置是否成功的話,可以在不加注解的時(shí)候插入兩條數(shù)據(jù),后面一條數(shù)據(jù)是會(huì)報(bào)錯(cuò)的。
如果不使用事務(wù)的話,會(huì)發(fā)現(xiàn)第一條插入成功到DB里去了,然后在插入第二條的時(shí)候,程序報(bào)錯(cuò)。
如果這里使用@Transactional 開啟事務(wù),那么會(huì)發(fā)現(xiàn)兩條數(shù)據(jù)都插入不了,直接報(bào)錯(cuò)了,這里事務(wù)就成功的啟用了起來。
@Transactional
(1)這里說明一下,有的把這個(gè)注解放在類名稱上面了,這樣你配置的這個(gè)@Transactional 對這個(gè)類中的所有public方法都起作用.
(2)@Transactional 方法方法名上,只對這個(gè)方法有作用,同樣必須是public的方法
(3) 數(shù)據(jù)庫引擎要支持事務(wù),如果是MySQL,注意表要使用支持事務(wù)的引擎,比如innodb,如果是myisam,事務(wù)是不起作用的
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)賬號登錄錯(cuò)誤次數(shù)的限制和鎖定功能
本文介紹了如何使用SpringBoot和Redis實(shí)現(xiàn)賬號登錄錯(cuò)誤次數(shù)限制和鎖定功能,通過自定義注解和AOP切面,結(jié)合配置文件靈活設(shè)置最大嘗試次數(shù)和鎖定時(shí)長,感興趣的朋友跟隨小編一起看看吧2024-12-12
Java安全 ysoserial CommonsCollections2示例分析
這篇文章主要為大家介紹了Java安全 ysoserial CommonsCollections2示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼
本篇文章主要介紹了Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08
Java計(jì)算代碼段執(zhí)行時(shí)間的詳細(xì)過程
java里計(jì)算代碼段執(zhí)行時(shí)間可以有兩種方法,一種是毫秒級別的計(jì)算,另一種是更精確的納秒級別的計(jì)算,這篇文章主要介紹了java計(jì)算代碼段執(zhí)行時(shí)間,需要的朋友可以參考下2023-02-02
Java并發(fā)編程之Condition源碼分析(推薦)
這篇文章主要介紹了Java并發(fā)編程之Condition源碼分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法
這篇將介紹使用Post方式提交數(shù)據(jù)到服務(wù)器,由于Post的方式和Get方式創(chuàng)建Web工程是一模一樣的,只用幾個(gè)地方的代碼不同,這篇文章主要介紹了使用Post方式提交數(shù)據(jù)到Tomcat服務(wù)器的方法,感興趣的朋友一起學(xué)習(xí)吧2016-04-04

