在jdbc编程中,事务是手动提交的,spring接管事务后,整个流程被透明化的东西很多,作为编程人员是应该了解什么被透明化了,不然无法了解事情的本质。
一、jdbc事务
事务处理一定程度上和数据库实现相关,数据库有个autocommit属性,一般而言,MySQL默认开启,Oracle默认关闭,另外autocommit属性分为全局和会话级别,全局级别影响的是所有会话,单个会话级别只针对当前会话生效,这个属性的设置影响到了jdbc事务编程的方式,因为在自动提交模式下,任何一个语句都会作为一个单独事务立马提交,这样编程人员无法将多条语句作为一个事务统一提交,所以,在jdbc编程中,一般模式是将autocommit首先设置为false,然后开始手动事务,大致伪代码如下:
package com.simple.course;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* desc
*
* @author wangcheng
* @date 2024/1/20 11:14
*/
@Service
public class Transaction1 {
@Autowired
DataSource dataSour