zoukankan      html  css  js  c++  java
  • 2018-09-15JDBC事务详解1

    在事务里面SELECT,查询的也是事务日志里面的内容!

    什么是事务?

    一件事情有N个组成单元,要不这N个组成单元同时成功,要不N个单元就同时失败,就是将n个组成单元放到一个事务中(例如转账,张三账户减500元的同时,李四账户要加500元)!

    MySQL事务:

    ①  默认事务:一条SQL语句默认开启事务,并提交事务!

    ②  手动事务:

    1;显式的开启事务:start transaction

    2;提交事务:commit(当开启了事务,写完SQL语句并不执行,而是写入事务中,等待commit命令才开始执行)!

    3;事务回滚:rollback(当开启了事务,要么提交事务,要么事务回滚,当提交了事务之后,不可以再执行事务回滚)!

    JDBC事务:

    ①  默认事务:excuteUpdate()方法,每一次执行该方法,代表事务自动提交!

    ②  手动事务:

    1;开启事务:conn.setAutoComnmit(false);

    2;提交事务:conn.commit();

    3;事务回滚:conn.rollback();

    //注意:操作一系列事务的Connection对象,必须是同一个,为了保证该条件,引入了ThreadLocal这个容器,在该操作是单线程的前提下,这个容器带着唯一的Connection对象,让程序在一次请求中的任何位置,都能获取该对象!

    DBUTils事务操作:

    QueryRunner

    有参构造:QueryRunner runner = new QueryRunner(DataSource dataSource);

    有参构造将数据源(连接池)作为参数传入QueryRunner,QueryRunner会从连接池中获得一个数据库连接资源操作数据库,所以直接使用无Connection参数的update方法即可操作数据库!

    无参构造:QueryRunner runner = new QueryRunner();

    无参的构造没有将数据源(连接池)作为参数传入QueryRunner,那么我们在使用QueryRunner对象操作数据库时要使用有Connection参数的方法!

  • 相关阅读:
    Java并发编程:线程池的使用
    java动态代理实现与原理详细分析
    Springmvc 横向源码原理解析(原创)
    spring事物配置,声明式事务管理和基于@Transactional注解的使用
    Spring IoC的原理为什么是反射而不是new
    Mybatis源码分析(原创)
    Springboot中做定时任务 和 Springboot API 分页
    python程序入门 基础教程
    本地的jar包添加到maven库中 jdbc举例
    基于接口隔离原则的依赖注入实现
  • 原文地址:https://www.cnblogs.com/postgredingdangniu/p/9650037.html
Copyright © 2011-2022 走看看