当前位置: 首页 > 面试题库 >

为什么将自动提交设置为true?

柳经纶
2023-03-14
问题内容

我一直想知道为什么JDBC
API提供了自动提交模式(java.sql.Connection.setAutocommit())。似乎很吸引人的麻烦只是诱使人们陷入麻烦。我的理论是,仅将其添加到JDBC是为了简化希望创建使用JDBC编辑和运行SQL的工具的供应商的生活。是否有其他原因打开自动提交,还是总是错误?


问题答案:

不幸的是,使用自动提交是特定于数据库的(事务行为也是如此)。我认为,如果您没有全局的程序化交易策略,自动提交可能比仅希望每个人都正确关闭/回滚交易更好。

对于MySQL而言,默认情况下您可以将autocommit = true保留为开,并且在您开始交易时会自动将其关闭。设置autocommit =
false的唯一原因是,如果有人要尝试在没有BEGIN的情况下启动事务,则要强制执行错误。

为了简化当今典型的Java + MySQL应用程序,我或多或少会忽略自动提交设置,使用打开会话可见模式并将其称为好。

我强烈建议不要使用显式RDBMS行锁,而应使用乐观锁。Hibernate提供了对乐观锁的内置支持,但是即使对于手动滚动的代码,这也是一种易于采用的模式,并提供了更好的性能。



 类似资料:
  • 我正在阅读https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/datastream/kafka/#kafka-消费者补偿提交行为配置 它说: 启用检查点:如果启用了检查点,Flink Kafka使用者将在检查点完成时提交存储在检查点状态中的偏移量。这确保了Kafka代理中提交的偏移量与检查点状态中

  • 默认情况下,Spring数据JPA或Hibernate的自动提交设置为false。这听起来很合理,因为这些框架与实体一起工作,并且对实体的更新可能涉及通过多个SQL查询对多个表的更新。因此,通过将auto-commit设置为false并显式控制事务,这些框架确保了对实体的更改是原子的和一致的。 但现在Hikari是spring data jpa的默认连接池提供程序,在查看应用程序日志时,我看到Hi

  • 问题内容: Test 在100%扩展,因为它应该,但图像没有中心本身。为什么? 问题答案: 因为您的图片是[inline-block元素。您可以将其更改为如下所示的块级元素: 它将居中。

  • 我目前正在学习Spring Hibernate的集成,到目前为止,我正在让它发挥作用。但我遇到了这样的情况:我不想在进程结束时提交事务,因为我只想看到生成的sql语句,以用于测试和调试。 我已经在我的hibernate属性中添加了false,但它仍然不起作用。 如果使用Spring处理hibernate事务,是否可能实现?因为在hibernate中使用传统事务是可能的,只是不调用会话。commit

  • 我刚刚安装了Ubuntu desktop 12.04并通过以下方式安装了Java 6 JDK: 但是当我转到时,我没有看到一个名为的目录,所以我认为它根本不存在!?! 当我转到时,我看到: 我现在正试图将作为环境变量添加到中,以便从基于shell的Ant构建中访问它: ? ? 还有别的吗? 我所说的“”是指我在系统上安装的JDK6的顶级目录,无论它在哪里······

  • 问题内容: 。 为什么将Double.parseDouble制作为?例如 : IS印刷 相反,它必须显示或 任何帮助都将不胜感激。 问题答案: 仅具有15/16位数的精度,当您给它提供一个数字时,它就无法表示(多数情况下,甚至0.1都不是精度),它将采用最接近的可表示数字。 如果要精确表示,则需要使用BigDecimal。 版画 现实世界中很少有问题需要这种准确性,因为您无论如何都无法准确地进行测