gpt4 book ai didi

java - 何时回滚 jdbc 事务

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:42 26 4
gpt4 key购买 nike

我在 http://download.oracle.com/javase/tutorial/jdbc/basics/transactions.html 中读到了一个有趣的声明

有趣的部分是:

“捕获 SQLException 会告诉您出现了问题,但它不会告诉您已提交或未提交什么。由于您不能指望没有提交任何内容,因此调用方法回滚是确定的唯一方法。”

真的是这样吗?如果我不调用 commit 但收到 SQLException,那么我不能指望没有提交任何内容吗?如果我的程序退出时没有调用提交或回滚怎么办?我以为交易会自动为我回滚,但这个声明消除了我的确定性。

最佳答案

基本上,您考虑在其默认隔离级别中使用的任何现代数据库都不会表现出这种行为。但最终,下面发生的事情超出了 JDBC 的控制范围,而且它知道您可能正在使用 Informix 5 或 1988 年的 Sybase,其底层有一个适配器层。

因此,从高级语言API规范的角度来看,他们必须声明,如果你不正确使用它,则没有任何保证。基本上,它是说,如果放弃既没有提交也没有回滚的连接的结果导致一些执行的语句显示在数据库级别,那么它不会被视为 JDBC 级别的错误。 (通常对于大多数数据库,我们会在数据库级别考虑该错误,但同样,JDBC 是一个高级 API。)

关于java - 何时回滚 jdbc 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3630364/

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