JDBC中的事务保存点,即事务发生回滚的时候,回滚到保存点那里去,事务开始到保存点之间的操作不用回滚.
事务(SavePoint)
l 当只想撤销事务中的部分操作时可使用SavePoint
l SavePoint sp = connection.setSavepoint();
l connection.rollerbak(sp); //回滚到那个事务点上去
l connection.commit();
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
public class SavePointTest {
public static void main(String[] args) throws SQLException {
test();
}
static void test() throws SQLException {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
Savepoint sp = null;
try {
conn = JdbcUtils.getConnection();
conn.setAutoCommit(false);
st = conn.createStatement();
String sql = "update user set money=money-10 where id=1";
st.executeUpdate(sql);
sp = conn.setSavepoint();
sql = "update user set money=money-10 where id=3";
st.executeUpdate(sql);
sql = "select money from user where id=2";
rs = st.executeQuery(sql);
float money = 0.0f;
if (rs.next()) {
money = rs.getFloat("money");
}
if (money > 300)
throw new RuntimeException("已经超过最大值!");
sql = "update user set money=money+10 where id=2";
st.executeUpdate(sql);
conn.commit();
} catch (RuntimeException e) {
if (conn != null && sp != null) {
conn.rollback(sp);//回滚到那个事务点上去
conn.commit();
}
throw e;
} catch (SQLException e) {
if (conn != null)
conn.rollback();
throw e;
} finally {
JdbcUtils.free(rs, st, conn);
}
}
}
分享到:
相关推荐
一旦设置了保存点,如果在事务过程中发生错误或需要部分回滚,可以使用`rollback(Savepoint savepoint)`方法来撤销到该保存点之前的所有操作。例如: ```java try { // 执行一些数据库操作 } catch (SQLException ...
1. **JDBC事务的基本概念** - **事务**:事务是数据库系统中执行的一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有四大特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)...
此外,Oracle数据库支持事务的保存点(SAVEPOINT),这是一种在事务中设置的标记,允许在回滚时只回滚到保存点,而不是整个事务。这在需要部分撤销操作但又不想完全回滚事务的情况下非常有用。 总的来说,Oracle在...
例如,如果在保存数据时发生错误,整个事务将被回滚,保证数据的一致性。 8. **测试与调试**:完成整合后,通过编写单元测试和集成测试来验证配置是否正确,确保事务管理和回滚功能正常工作。 以上就是Spring、...
总结来说,Java的JDBC提供了强大的事务管理能力,包括设置保存点以实现部分回滚。这对于处理复杂的业务逻辑和异常处理是非常有用的。正确理解和使用这些功能,可以帮助开发人员编写出更加健壮和灵活的数据库应用程序...
该控制器提供了统一的事务管理方法,包括事务的提交、回滚和保存点等。该控制器也可以提供事务的timeout管理和事务传播控制。 四、事务模板的实现 事务模板是指提供模板方法对事务处理的代码进行控制。事务模板...
JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...
当一组相关的操作必须一起成功完成,或者如果其中任何一部分失败,则全部回滚,事务就显得尤为重要。在本例中,我们关注的是与MySQL数据库交互时使用JDBC进行事务处理所需的相关jar包。 首先,我们需要`mysql-...
**JDBC事务**主要针对单个数据库连接,由数据库管理系统(DBMS)自身管理事务。JDBC提供了`Connection`对象的`commit()`和`rollback()`方法用于提交和回滚事务。这是简单的单阶段提交,适用于单一数据源的情况。 **...
### JDBC事务控制详解 在数据库应用开发中,事务管理是一项重要的功能,它确保了一系列操作能够作为一个整体被正确地执行或回滚。Java Database Connectivity (JDBC) 是 Java 平台中用于连接数据库的标准 API,提供...
本篇将深入探讨JDBC API中关于事务的提交和回滚的细节。 在默认情况下,JDBC连接处于自动提交模式,这意味着每执行一个SQL语句,如果执行成功,该操作就会立即提交到数据库。这种模式适合于简单的应用,但在以下几...
“JDBC事务管理项目”涵盖了如何在Java应用中利用JDBC进行事务控制,包括开启手动事务、提交、回滚以及设置事务隔离级别等。理解并掌握这些知识对于开发健壮的数据库应用至关重要,能够确保数据的完整性和一致性。
综上,Spring JDBC事务管理是Spring框架中重要的部分,通过理解并掌握其原理和使用方法,可以帮助开发者构建稳定、可靠的数据库应用程序。在实践中,要根据项目的具体需求选择合适的事务管理策略,并注意处理事务...
**JDBC事务初探** Java Database Connectivity(JDBC)是Java平台中用于与关系数据库进行交互的API。在处理数据库操作时,事务管理是至关重要的一个环节,它确保了数据的一致性和完整性。本篇文章将深入探讨JDBC中...
**JDBC事务** 事务是数据库操作的基本单元,确保数据的一致性和完整性。JDBC提供了对事务的支持。 1. **开启事务**: 通过`Connection`对象的`setAutoCommit(false)`方法关闭自动提交,从而手动控制事务的开始。 2...
Java事务管理学习之JDBC详解是Java事务管理学习的重要组成部分,文章详细介绍了Java事务管理学习之JDBC的相关知识点,包括事务的概念、特性、类型、JDBC事务管理等。 一、事务的概念 事务是数据库的逻辑工作单位,...
常用的实现类有`DataSourceTransactionManager`,它用于管理基于JDBC的事务。 #### TransactionDefinition 该接口定义了事务的一些属性,包括隔离级别、传播行为等。 - **事务的隔离级别**:控制事务与其他事务...
- `hasSavepoint()`:检查事务是否创建了保存点,保存点允许在回滚时仅回滚到特定点。 - `isCompleted()`:判断事务是否已完成,即提交或回滚。 - `isNewTransaction()`:确认当前事务是否为新创建的。 - `...
在实际开发中,Spring框架提供了对JDBC事务管理的高级支持,通过声明式事务管理,开发者可以在XML配置或注解中定义事务边界,简化事务处理。例如,使用`@Transactional`注解可以声明一个方法为事务方法,Spring会...