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

时间:2016-11-10 13:53:05

标签: java oracle performance jdbc

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

2 个答案:

答案 0 :(得分:1)

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

只有当您在数据库表中/跨数据库表处理多个connection.setAutoCommit(false) sql查询(通过JDBC处理)作为原子操作时,才会通过设置INSERT/UPDATE来控制事务。,仅适用于中等/复杂大小的应用程序。

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

  

如果已禁用自动提交模式,则方法commit必须为   显式调用以提交更改;否则,数据库   更改将不会保存。

您可以查看here

按照你的方法,即明确地为每一笔交易调用commit是不必要的,如果我们忽略甚至一次,那么弊大于利。

答案 1 :(得分:0)

与我们使用日志框架而不是System.out.println的原因类似。

最简单的设置是针对最简单的情况。自动提交适用于琐碎的用法和应用程序。简单的情况不需要明确定义的事务边界,因此为了保持简单,autocommit默认为true。

维基百科有一篇关于数据库交易的非常好的文章,值得一读:https://en.wikipedia.org/wiki/Database_transaction