每个堆叠事务是否使用单独的连接?

Does each stacked transaction use a separate connection?

我有多个堆栈事务是通过调用堆栈方法创建的:

@Transactional(propagation = Propagation.REQUIRES_NEW)

所以结果是事务等待新事务等待新事务...

这些事务中的每一个都使用来自连接池的单独数据库连接,可能使池不足吗?

P.S.: 我知道我不应该因为错误而不是回滚所有交易而堆叠新交易,但我对这种行为很好奇。

是的,当您使用 REQUIRES_NEW 时,您将获得每个方法调用的新事务。新事务意味着正在使用池中的新数据库连接。

是的,这意味着它可能会饿死。

您可能会喜欢这本数据库交易手册,以获取更多详细信息,包括大量代码示例:https://www.marcobehler.com/books/1-java-database-connections-transactions