事务

事务的概念

ACID四个原子性
Atomicity,原子性:一组事务,要么成功,要么失败
Consistency,一致性:事务执行前后,数据库状态保持一致
Isolation,隔离性:事务互相隔离
Durability,持久性:事务执行的结果是永久的

mysql开启事务

默认情况下,mysql每执行一条sql语句都是一条事务,自动提交。如果一条事务有多条sql语句需要执行,要开启一个新的事务

开启事务
start transaction
....
结束事务
commit/rollback

在执行SQL语句之前,先执行start transaction,这就开启了一个事务(事务的起点),然后可以去执行多条SQL语句,最后要结束事务,commit表示提交,即事务中的多条SQL语句所作出的影响会持久到数据库中,或者rollback,表示回滚到事务的起点,之前做的所有操作都被撤销了。

jdbc 开启事务

默认自动提交事务,若要手动提交,则关闭事务。
在JDBC中处理事务,都是通过Connection完成的。
同一事务中所有的操作,都在使用同一个Connection对象。

con.setAutoCommit(false) 表示开启事务。
...(进行多条sql)
commit():提交结束事务。
rollback():回滚结束事务。
附上jdbc代码练习
 public static void main(String[] args) throws ClassNotFoundException {
        Connection conn= null;
        String driver = "com.mysql.jdbc.Driver";
        //时区问题,serverTimezone=UTC
        String url = "jdbc:mysql://localhost:3306/czt?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
        String name = "root";
        String password = "666666";
        //先获取链接驱动
        Class.forName(driver);
        String sql =null;
        try {
        	//通过driverManager获取链接
            conn = DriverManager.getConnection(url, name, password);
            if (conn != null ){
                System.out.println("成功连接");
            }
            //通过链接,发送statement    preperStatement的区别是,可以预编译sql语句,再注入参数,
            Statement statement = conn.createStatement();
            sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
            //返回影响行数
            int i = statement.executeUpdate(sql);
            if (i!=-1){
                System.out.println("修改成功");
            }
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

spring 开启事务

spring 事务管理详解
在xml配置文件中
第一步:配置事务管理器
第二步:开启事务注解

<!-- 第一步:配置事务管理器 (和配置文件方式一样)-->
	<bean id="dataSourceTransactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<!-- 注入dataSource -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 第二步: 开启事务注解 -->
	<tx:annotation-driven transaction-manager="dataSourceTransactionManager" />
	<!-- 第三步 在方法所在类上加注解 -->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值