弹簧事务边界和数据库连接保持
2022-09-02 22:01:25
我正在使用弹簧靴并在jpa上使用tomcat连接池进行休眠。你能帮我了解spring在交易过程中如何使用数据库连接吗?例如,请考虑以下方案:
- 我们有 2 个连接的 DB 连接池。
- Spring启动一个事务,即用@Transactional注释装饰的调用方法。
- 此方法执行数据库更新
- 调用外部服务
- 当从外部服务接收响应时,它会更新 DB 并返回。
- Spring 提交事务
假设外部服务(步骤 4)需要 1 分钟才能完成,则数据库池中将有多少个数据库连接可用?。假设 spring 会一直保持 DB 连接,直到事务完成,在此期间收到的任何请求都只有 1 个 DB 连接可用,如果我们收到 1 个以上的请求,他们将不得不等待 DB 连接。
请确认我的理解,如果正确,建议我如何在高交易量系统中处理这种情况。
谢谢