zoukankan      html  css  js  c++  java
  • 事务的学习,从jdbc开始:jdbc对事务的支持与实现

      在使用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();//事务回滚 } } }
  • 相关阅读:
    从 HTTP 到 HTTPS
    一条很用的MSSQL语句
    MVC中 jquery validate 不用submit方式验证表单或单个元素
    深信服务发布SSL站点
    警告: 程序集绑定日志记录被关闭(IIS7 64位系统)
    Winform中子线程访问界面控件时被阻塞解决方案
    C# Winform中执行post操作并获取返回的XML类型的数据
    vs2010 vs2012中增加JSon的支持
    WebService应用一例,带有安全验证
    C#事件、委托简单示例
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7941209.html
Copyright © 2011-2022 走看看