我们将 hiberante、c3p0、postgresql 用于持久层。在运行数据密集型作业(主要是选择/插入)时,其中一位开发人员决定在 commit 之前使用 entityManager.flush() ,就像这样
entityManager.getTransaction().begin()
insert n elements
entityManager.flush()
entityManager.getTransaction().commit()
一段时间后,所有运行数据密集型作业的线程似乎都被阻塞了,我们发现它们正在等待来自池的数据库连接。池中处于“空闲事务”状态的所有连接。这种情况每次都可以复制。
删除 flush() 后,情况消失了。
有谁知道为什么会发生这种情况?
感谢:D