从 3.6 升级到休眠 4.2.4 后,初始化延迟收集后,数据库连接不会返回到池中。因此,当用户数超过池中的连接数时,连接池会很快耗尽。HHH-4808中描述了类似的症状,但我们在 Hibernate 3.1-3.6 中没有观察到这些问题
相关设置:
hibernate.connection.autocommit=true
hibernate.connection.release_mode=after_transaction
集合初始化后,没有打开的事务。所以根据设置连接必须被释放。
在休眠 3.6 中,连接被释放(通过从 OneToManyLoader 间接调用 ConnectionManager.aggresiveRelease())。这对我们的使用场景来说是非常关键的变化。这种改变是故意的吗?是否可以通过某些设置组合来激活旧行为?