[英]Does each call to JDBC commit() implicitly mark the start of a transaction block?
这取决于。 JDBC规范允许驱动程序确切地决定何时启动新事务,因此您不能对此一概而论。 一个驱动程序可能会在commit()
/ rollback
或setAutoCommit(false)
之后立即开始一个新事务,尽管如果很多驱动程序实际执行该操作,我会感到惊讶。
JDBC 4.2(第10.1节)特别指出(强调我的意思):
何时开始新事务是由JDBC驱动程序或基础数据源隐式做出的决定。 尽管某些数据源实现了显式的“开始事务”语句,但没有JDBC API可以这样做。 通常,当当前的SQL语句需要一个新的事务并且没有适当的事务时,就会启动一个新的事务。
仅在确实必要时才启动事务,这样效率更高,而过早启动事务将影响数据的可见性(取决于隔离级别)。 我假设(但尚未验证)大多数驱动程序都在这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.