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

我可以在Derby(JDBC)中提交事务之前关闭事务中的语句吗?

靳金鹏
2023-03-14
问题内容

基本上我有(忽略异常处理等):

connection.setAutoCommit(false);

Statement statement1 = connection.createStatement();
statement1.executeUpdate("...");
statement1.close();

Statement statement2 = connection.createStatement();
statement2.executeUpdate("...");
statement2.close();

connection.commit();

如果我理解正确,那应该不会有任何影响,因为它真正所做的只是为GC释放了资源。特别是对于Derby:不再需要语句,结果集和连接时,应明确关闭它们。与Derby的连接是应用程序外部的资源,并且垃圾收集器不会自动关闭它们。

但是,这会导致交易出现任何问题吗?我认为交易不依赖于该声明。有人可以确认吗?


问题答案:

绝对可以关闭它们,应该这样做。



 类似资料:
  • 问题内容: 我需要从存储过程中写入日志表。现在,此日志信息必须能够在回滚过程中幸免。 我知道以前曾问过这个问题,但是我的情况有所不同,在这些问题中找不到我的问题的答案。 当存储过程中没有错误时,事情就很简单了,日志表中的条目就在那里。 当有错误时,事情就变得复杂了。 在该过程中,我可以在catch中进行回滚,然后将数据插入日志表,我知道并且我已经在这样做了。 但是问题是当存储过程这样调用时: 我知

  • 以下是使用事务教程中描述的提交和回滚的代码示例。 此示例代码是基于前面章节中完成的环境和数据库设置编写的。 复制并将以下示例代码保存到:CommitAndRollback.java 中,编译并运行如下 - 编译并运行结果如下 -

  • 上下文是带有Hibernate和Spring的Java-JPA。 让我们以两阶段提交协议的场景为例(但只有一个资源): > 要从应用程序提交的 查询 3.2如果没有 3.2.1回滚到数据库 我想要的是一种在代码中从3.1.1进行回调的方法,但只有当知道事务将被提交,但在实际提交之前。另外,如果在这里抛出异常,则应该回滚事务。 null

  • 我的路线如下 我知道(A)处的JMS消费者将在每次轮询时分叉JMS事务,并附加到线程。(B)中的事务处理节点也将在交换到达那里并连接到线程后分叉JPA事务。 请在下面找到我的问题: > < li >能否将两个不同的事务附加到一个线程上(如上所示)? < li >如果是,哪一个应该被停职? < li> 上述路由的提交和回滚顺序应该是什么? 注:我没有从骆驼在行动第二版中找到任何明显的答案,所以请指导

  • 我无法使spring-Cloud-stream-binder-kafka适用于以下用例: 启动@事务(Rest控制器)DB更新/插入发送Kafka消息 在事务提交之前,使用者(使用@EnableBinding和@StreamListener配置)能够读取记录。此使用者已配置了read\u提交的隔离级别。 我不确定这是一个问题还是我这边的任何配置。 尝试配置bean ChainedTransacti

  • 主要内容:提交和回滚,使用保存点如果JDBC连接处于自动提交模式,默认情况下,则每个SQL语句在完成后都会提交到数据库。 对于简单的应用程序可能没有问题,但是有三个原因需要考虑是否关闭自动提交并管理自己的事务 - 提高性能 保持业务流程的完整性 使用分布式事务 事务能够控制何时更改提交并应用于数据库。 它将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,整个事务将失败。 要启用手动事务支持,而不是使用JDBC驱