Spring 程式設計式事務管理
Spring 程式設計式事務管理
程式設計式事務管理方法允許你在對你的原始碼程式設計的幫助下管理事務。這給了你極大地靈活性,但是它很難維護。
在我們開始之前,至少要有兩個資料庫表,在事務的幫助下我們可以執行多種 CRUD 操作。以 Student 表為例,用下述 DDL 可以在 MySQL TEST 資料庫中建立該表:
CREATE TABLE Student( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID) );
第二個表是 Marks,用來儲存基於年份的學生的標記。這裡 SID 是 Student 表的外來鍵。
CREATE TABLE Marks( SID INT NOT NULL, MARKS INT NOT NULL, YEAR INT NOT NULL );
讓我們直接使用 PlatformTransactionManager 來實現程式設計式方法從而實現事務。要開始一個新事務,你需要有一個帶有適當的 transaction 屬性的 TransactionDefinition 的例項。這個例子中,我們使用預設的 transaction 屬性簡單的建立了 DefaultTransactionDefinition 的一個例項。
當 TransactionDefinition 建立後,你可以透過呼叫 getTransaction() 方法來開始你的事務,該方法會返回 TransactionStatus 的一個例項。 TransactionStatus 物件幫助追蹤當前的事務狀態,並且最終,如果一切執行順利,你可以使用 PlatformTransactionManager 的 commit() 方法來提交這個事務,否則的話,你可以使用 rollback() 方法來回滾整個操作。
現在讓我們編寫我們的 Spring JDBC 應用程式,它能夠在 Student 和 Mark 表中實現簡單的操作。讓我們適當的使用 Eclipse IDE,並按照如下所示的步驟來建立一個 Spring 應用程式:
步驟 | 描述 |
---|---|
1 | 建立一個名為 SpringExample 的專案,並在建立的專案中的 src 資料夾下建立包 com.tutorialspoint 。 |
2 | 使用 Add External JARs 選項新增必需的 Spring 庫,解釋見 Spring Hello World Example chapter. |
3 | 在專案中新增 Spring JDBC 指定的最新的庫 mysql-connector-java.jar,org.springframework.jdbc.jar 和 org.springframework.transaction.jar。如果你還沒有這些庫,你可以下載它們。 |
4 | 建立 DAO 介面 StudentDAO 並列出所有需要的方法。儘管它不是必需的並且你可以直接編寫 StudentJDBCTemplate 類,但是作為一個好的實踐,我們還是做吧。 |
5 | 在 com.tutorialspoint 包下建立其他必需的 Java 類 StudentMarks,StudentMarksMapper,StudentJDBCTemplate 和 MainApp。如果需要的話,你可以建立其他的 POJO 類。 |
6 | 確保你已經在 TEST 資料庫中建立了 Student 和 Marks 表。還要確保你的 MySQL 伺服器執行正常並且你使用給出的使用者名稱和密碼可以讀/寫訪問資料庫。 |
7 | 在 src 資料夾下建立 Beans 配置檔案 Beans.xml 。 |
8 | 最後一步是建立所有 Java 檔案和 Bean 配置檔案的內容並按照如下所示的方法執行應用程式。 |
下面是資料訪問物件介面檔案 StudentDAO.java 的內容:
package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; public interface StudentDAO { /** * This is the method to be used to initialize * database resources ie. connection. */ public void setDataSource(DataSource ds); /** * This is the method to be used to create * a record in the Student and Marks tables. */ public void create(String name, Integer age, Integer marks, Integer year); /** * This is the method to be used to list down * all the records from the Student and Marks tables. */ public ListlistStudents(); }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2797818/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring的事務管理入門:程式設計式事務管理(TransactionTemplate)Spring程式設計
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- Spring的事務管理(二)宣告式事務管理Spring
- Spring程式設計式和宣告式事務例項講解Spring程式設計
- spring宣告式事務管理配置Spring
- 說說在 Spring 中,如何程式設計實現事務管理Spring程式設計
- Spring IoC、面向切面程式設計、事務管理等Spring基本概念詳解Spring程式設計
- 分散式鎖和spring事務管理分散式Spring
- Spring 事務管理Spring
- Spring系列.事務管理Spring
- Spring系列-事務管理Spring
- Spring的事務管理Spring
- Spring/SpringBoot中的宣告式事務和程式設計式事務原始碼、區別、優缺點、適用場景、實戰Spring Boot程式設計原始碼
- Spring 中的事務管理Spring
- Spring事務管理總結Spring
- 分散式事務之Spring事務與JMS事務(二)分散式Spring
- 三 Spring 宣告式事務Spring
- Spring-宣告式事務Spring
- Spring宣告式事務控制Spring
- (四)Spring中的事務管理Spring
- Spring宣告式事務@Transactional使用Spring
- spring AOP 程式設計式應用Spring程式設計
- 使用Spring Boot實現事務管理Spring Boot
- Spring事務管理:非常規指南 - marcobehlerSpring
- Spring事務管理(詳解+例項)Spring
- 後端程式設計師必備:分散式事務基礎篇後端程式設計師分散式
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- 深刻理解Spring宣告式事務Spring
- Spring @Transactional 宣告式事務揭祕Spring
- Spring / Spring boot 非同步任務程式設計 WebAsyncTaskSpring Boot非同步程式設計Web
- spring事務管理原始碼分析(二)事務處理流程分析Spring原始碼
- 聊聊Spring Reactor反應式程式設計SpringReact程式設計
- Spring的事務管理(一) Spring事務管理的實現,事務的屬性(隔離級別,傳播行為,只讀)Spring
- Spring事務(Transaction)管理高階篇一棧式解決開發中遇到的事務問題Spring
- Spring中事務管理org.springframework.transactionSpringFramework
- Spring框架中配置事務管理器Spring框架
- 使用Spring Boot實現分散式事務Spring Boot分散式
- 五(二)、spring 宣告式事務xml配置SpringXML