gpt4 book ai didi

java - 每次调用 JDBC commit() 是否隐式标记事务 block 的开始?

转载 作者:行者123 更新时间:2023-11-30 08:01:14 25 4
gpt4 key购买 nike

如本 Stackoverflow answer 所述在this网站,在给定 setAutoCommit(false) 的情况下,每个 commit() 调用都会隐式启动另一个事务 block 吗?

最佳答案

这取决于。 JDBC 规范允许驱动程序准确决定何时开始新事务,因此您不能对此一概而论。驱动程序可能会在 commit()/rollbacksetAutoCommit(false) 之后直接开始一个新事务,尽管如果很多司机实际上是这样做的。

特别是 JDBC 4.2(第 10.1 节)说(强调我的):

When to start a new transaction is a decision made implicitly by either the JDBC driver or the underlying data source. Although some data sources implement an explicit “begin transaction” statement, there is no JDBC API to do so. Typically, a new transaction is started when the current SQL statement requires one and there is no transaction already in place.

只在确实需要时才启动事务效率更高,过早启动事务会妨碍数据的可见性(取决于隔离级别)。我假设(但尚未证实)这是大多数司机所做的。

关于java - 每次调用 JDBC commit() 是否隐式标记事务 block 的开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37915222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com