第10章—开启事务
spring boot 系列學(xué)習(xí)記錄:http://www.cnblogs.com/jinxiaohang/p/8111057.html
碼云源碼地址:https://gitee.com/jinxiaohang/springboot
此前,我們主要通過XML配置Spring來托管事務(wù)。在SpringBoot則非常簡單,只需在業(yè)務(wù)層添加事務(wù)注解(@Transactional )即可快速開啟事務(wù)。雖然事務(wù)很簡單,但對(duì)于數(shù)據(jù)方面是需要謹(jǐn)慎對(duì)待的,識(shí)別常見坑點(diǎn)對(duì)我們開發(fā)有幫助。
推薦做法:在業(yè)務(wù)層統(tǒng)一拋出異常,然后在控制層統(tǒng)一處理。
1. 引入依賴
如果是新建項(xiàng)目的,可以在這頁添加依賴,如是原有項(xiàng)目可直接編寫。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xiaohang</groupId><artifactId>springboot-transactional</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>springboot-transactional</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>?
二、添加數(shù)據(jù)源
spring:datasource:url: jdbc:mysql://localhost:3306/test?useSSL=falseusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverjpa:hibernate:ddl-auto: updateshow-sql: true?
三、編寫各層代碼
- 實(shí)體層
?
- dao層
?
- service層
?
- service實(shí)現(xiàn)層
?
- 測(cè)試層
?
三、測(cè)試
?原始數(shù)據(jù):
?
?
?不開啟事務(wù),不拋出異常時(shí):
?
?
?不開啟事務(wù),拋出異常時(shí)(轉(zhuǎn)賬時(shí)發(fā)生錯(cuò)誤,錢扣完,但是對(duì)方錢未到賬;或者錢到帳了,但是錢未扣。)
?
?
?先恢復(fù)數(shù)據(jù):
?開啟事務(wù),拋出異常時(shí)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/jinxiaohang/p/8296549.html
總結(jié)
- 上一篇: VT 105120毫米实验自行反战车炮?
- 下一篇: 我国在建国初期是如何维护国家安全的