当大多数最好的编程方法建议将JDBC自动提交设置为false时,JDBC API设计背后的理由是什么将默认值设置为true?
答案 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