继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring 编程式事务管理

慕田峪4524236
关注TA
已关注
手记 204
粉丝 19
获赞 51

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.jarorg.springframework.jdbc.jar 和 org.springframework.transaction.jar。如果你还没有这些库,你可以下载它们。
4创建 DAO 接口 StudentDAO 并列出所有需要的方法。尽管它不是必需的并且你可以直接编写 StudentJDBCTemplate 类,但是作为一个好的实践,我们还是做吧。
5在 com.tutorialspoint 包下创建其他必需的 Java 类 StudentMarksStudentMarksMapperStudentJDBCTemplate 和 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 List<StudentMarks> listStudents(); }


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP