博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事务的学习,从jdbc开始:jdbc对事务的支持与实现
阅读量:6153 次
发布时间:2019-06-21

本文共 1561 字,大约阅读时间需要 5 分钟。

  在使用spring对项目进行开发时,所有的事务都是由spring来管理的。这样一来我们就可以不需要操心事务,可以专心的处理业务代码。

  但是,事务的底层究竟是如何实现的呢?那就从jdbc开始学习。

  在使用jdbc与数据库交互时,都是通过Connection来操作的。

  默认情况下,Connection会自动提交事务,即每执行一条SQL语句,也就对应一个事务。

  但是在开发过程中,一个事务通常会管理一组SQL统一的提交,来保证数据的安全。

  这时,就需要Connection#setAutoCommit(false)来阻止Connection的自动提交,并通过Connection#setTransactionIsolation()设置事务的隔离级别(具体可以百度)。

  当sql准备完成后,再通过Connection#commit提交事务,或者通过Connection#rollback()回滚事务

  代码示例:

package jdbcTransactionDemo;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import org.junit.Test;public class transactionDemo {    @Test    public void demo() throws ClassNotFoundException, SQLException {        Class.forName("com.mysql.jdbc.Driver");        Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1/test", "root", "123456");        conn.setAutoCommit(false);//关闭自动提交机制        conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);//设置事务隔离级别                try {            Statement stmt=conn.createStatement();            int rows=stmt.executeUpdate("insert into user(user_name,password) values(\"小明\",\"psw123456\")");            System.out.println(rows);            rows=stmt.executeUpdate("update user set user_name=\"小红\" where user_name=\"小明\"");            System.out.println(rows);                    conn.commit();//事务提交        }catch (Exception e) {            System.out.println("事务回滚了");            e.printStackTrace();            conn.rollback();//事务回滚        }        }}

 

转载于:https://www.cnblogs.com/chenkeyu/p/7941209.html

你可能感兴趣的文章
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>
java
查看>>
Vue.js连接后台数据jsp页面  ̄▽ ̄
查看>>
关于程序的单元测试
查看>>
mysql内存优化
查看>>
都市求生日记第一篇
查看>>
Java集合---HashMap源码剖析
查看>>
SQL优化技巧
查看>>