java - JDBC 在应用程序级别自动提交为 false

标签 java oracle performance jdbc

当大多数最佳编程方法建议将 JDBC 自动提交设置为 false 时,将默认值设置为 true 的 JDBC API 设计背后的合理性是什么?

最佳答案

将默认值设置为 true 的 JDBC API 设计背后的合理性是什么?

仅当您处理多个INSERT/UPDATE sql查询(通过JDBC处理)时,您才可以通过设置connection.setAutoCommit(false)来控制事务)在数据库表内/跨数据库表作为原子操作,只有中型/复杂规模的应用程序才需要。

现在,如果所有事务都必须显式处理(即,正如您所建议的,如果默认情况下 connection.setAutoCommit(false) ),那么开发人员即使对于单个 INSERT/UPDATE sql 查询(通过 JDBC 处理),确保已正确处理 commit() 和 rollback(),否则 连接将挂起,并且很难调试。

If auto-commit mode has been disabled, the method commit must be called explicitly in order to commit changes; otherwise, database changes will not be saved.

你可以看看here

按照您的方法,即为每笔交易显式调用 commit 是不必要的,如果我们忽略一次,那就弊大于利。

关于java - JDBC 在应用程序级别自动提交为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40529288/

相关文章:

java - 无法从 java.lang.Integer 转换为 R

Java 客户端/服务器 - 使用 BufferedWriter 而不是 PrintWriter

java - 取消委托(delegate)方法

java - 如何在java adf中显示数据库返回错误消息

oracle - ORA-12505,TNS :listener does not currently know of SID given in connect descriptor

performance - 什么 Rust 结构使用 libsystem_m 中的 nearbyint?

mysql - 如何设计和测试 Rails 中的大量并发数据?

java - 当尝试实例化自引用泛型类的实例时,如何处理自引用类型参数

mysql - SQL - varchar 与 int 的性能

javascript - 测量 Javascript 应用程序的 CPU 负载