java - 当连接在事务中关闭时会发生什么?

标签 java jdbc transactions

我正在使用 SQLServer 和 Springs JtaTransactionManager

给出这样的方法:

@Transactional
public void something() {
    try (final Connection conn1 = getConnection()) {
        //insert/update stuff in database
    }


    try (final Connection conn2 = getConnection()) {
        //insert/update stuff in database
    }
}

这个方法实际上是事务性的吗?当 conn1 关闭时所做的更改会发生什么,它们是否已提交到数据库?如果在使用 conn2 时发生异常,会发生什么情况,通过关闭的连接所做的更改是否可以回滚?

最佳答案

您不应在 @Transactional 内手动加载/获取连接或数据源,尤其是在使用 JtaTransactionManager

The JtaTransactionManager does not need to know about the DataSource, or any other specific resources, because it uses the container’s global transaction management infrastructure.

关于java - 当连接在事务中关闭时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408397/

相关文章:

spring - 无论我在哪里指定,Tomcat 7 都无法加载 ojdbc6.jar

java - CMT 中的 PersistenceContext 似乎与 BMT 中的 PersistenceContext 不同

java - 错误: unable to instantiate activity in android

java - Hibernate 和 MSSQL 2016 问题

java - 向 hashmap 添加值时出现 ConcurrentModificationException

java.sql.结果集 : flawed by design?

ios - 使用事务优化 SQLite

mysql - mysql如何处理多个START TRANSACTION(嵌套?)

java - Eclipse 术语中的部分站点是什么?

java - 如何在循环中访问对象字段?