1. jdbc一般事务步骤

这一系列文章并不完整,这是我分析公司内部分布式事务框架的一部分。我们的分布式是基于二阶段提交原理实现的,由于内部资料无法公开请大家谅解。下面将事务以及spring事务相关的一部分供大家参考!

1.一般jdbc事务要经历如下步骤

1)获取数据连接Connection con = datasource.getConnection();

2)设置非自动提交con.setAutoCommit(false);

3)执行数据库crud操作

4)提交或者回滚事务con.commit()/con.rollback()

如上步骤其实除了第3步跟业务逻辑有关,其它都是固定步骤与业务逻辑无关的,编程式事务控制到处充斥这些代码。

声明式事务是为了大家专注于业务,把事务固定步骤抽离出来,利用注解或者xml配置通过aop方式在方法调用前开启事务,在方法调用结束后commit或者rollback事务

 

对于声明式事务需要解决如下场景

1)业务A由methodA完成 作为一个原子操作,在一个事物内完成

2)业务B由methodB完成 作为一个原子操作,在一个事物内完成

3)业务C  methodC 由methodA, methodB以及其他业务逻辑代码组成也需要在事务中完成逻辑

   这里是把methodA, methodB的逻辑都搬到methodC中呢, 这样重复逻辑太多

   还是在methodC方法中直接调用methodA,methodB

   这里就需要解决事务的嵌套问题。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDBC(Java Database Connectivity)事务是一组关联的数据库操作,它们必须同时成功或同时失败。在Java中,使用JDBC事务可以确保在执行多个SQL语句时,如果其中一个语句执行失败,那么整个事务将回滚,保证数据的一致性和完整性。 下面是使用JDBC事务步骤: 1. 创建数据源和连接:使用JDBC连接数据库,并创建一个数据库连接对象。 2. 关闭自动提交模式:在执行事务前,需要关闭连接的自动提交模式。这可以通过调用连接对象的setAutoCommit(false)方法来实现。 3. 执行SQL语句:在事务中,需要执行多个SQL语句。这可以通过创建Statement或PreparedStatement对象,并调用它们的executeUpdate()或executeQuery()方法来实现。 4. 提交事务或回滚事务:在所有SQL语句都执行成功后,需要提交事务。如果其中任何一个SQL语句执行失败,需要回滚事务。这可以通过调用连接对象的commit()方法或rollback()方法来实现。 5. 关闭连接:在事务执行完成后,需要关闭连接。这可以通过调用连接对象的close()方法来实现。 下面是使用JDBC事务的示例代码: ```java Connection conn = DriverManager.getConnection(url, username, password); conn.setAutoCommit(false); try { PreparedStatement stmt1 = conn.prepareStatement("INSERT INTO table1 (col1, col2) VALUES (?, ?)"); stmt1.setString(1, "value1"); stmt1.setString(2, "value2"); stmt1.executeUpdate(); PreparedStatement stmt2 = conn.prepareStatement("UPDATE table2 SET col1 = ? WHERE col2 = ?"); stmt2.setString(1, "newvalue"); stmt2.setString(2, "value2"); stmt2.executeUpdate(); conn.commit(); } catch (SQLException e) { conn.rollback(); } finally { conn.close(); } ``` 在这个示例中,我们首先创建一个数据库连接对象,并关闭其自动提交模式。然后,执行两个SQL语句:一个是插入语句,另一个是更新语句。如果两个SQL语句都执行成功,我们就提交事务;否则,我们就回滚事务。最后,我们关闭连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值