gpt4 book ai didi

Java Spring : JDBC Connection getting closed

转载 作者:行者123 更新时间:2023-12-01 10:15:16 24 4
gpt4 key购买 nike

我正在使用 Spring JDBC 和 AOP 事务处理 Java 项目。我有一个场景,我从一个数据库获取大量数据并将其存储在 List> 对象中,然后将此数据传递给“write”方法,该方法创建与另一个数据库的 jdbc 连接并逐一写入该大量数据。写入需要大约 10 分钟的时间,然后我的代码再次尝试从第一个数据库获取一些数据,因为它尝试获取第一个数据库的前一个对象已经关闭的数据,因此我收到以下异常:

TransactionInterceptor:542 - 应用程序异常被回滚异常覆盖

注1:第一次连接数据库是通过spring bean文件,第二次连接只有在调用write方法时才会创建。

注2:整个过程在一个事务中(仅第一个数据库上的事务[我不需要其他数据库上的事务])

虽然写入巨大,第一个对象仍然空闲,因此被删除,当代码再次尝试获取数据时,它会创建不同的连接对象,但我的事务包含已经关闭的第一个连接对象,因此我收到此异常。

为了克服这个问题,我正在考虑增加我的database.config文件中的超时,但我不确定这只是超时问题,如果您认为这是超时问题,请向我建议代码增加 spring jdbc 的连接超时

我需要你对此的建议。也许我错了。如果我错了,请纠正我。

最佳答案

请注意,在您的情况下,增加事务超时并不是一个好主意(老实说,几乎从来都不是)。因为它只是不正确使用交易的一种解决方法。

根据设计,事务应该尽可能短。因此,从我的角度来看,建议的解决方案是将整个过程分为几个步骤,并在不同的事务中执行每个步骤。

顺便说一句:您的错误消息:应用程序异常被回滚异常覆盖表示 Spring 无法执行事务回滚。请调查此异常原因。

关于Java Spring : JDBC Connection getting closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35936241/

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