JDBC连接句柄应该是每个应用程序,每个线程还是每个查询?

Jos*_*man 1 java web-services database-connection jdbc application-server

假设我们在支持JDBC连接池的应用服务器上安装了Web应用程序或Web服务.

我应该Connection在每个线程或每个查询的基础上获取新内容吗?

谢谢!

Aff*_*ffe 8

希望您在每个事务处理单元的基础上抓住它们.

每个查询意味着您的系统中没有任何逻辑工作单元跨越多个查询.(也许这是真的,但你仍然可能想要考虑未来!)

每个线程(我假设它意味着请求范围,而不是线程的整个生命周期?)可能会导致持有它们超过绝对必要的时间,但它确实允许您更好地管理事务.(而且很多领先的框架在很长一段时间内都有效或已经发挥作用.如果你想在谷歌上做一些google-fu,那么这种模式称为Open Entity Manager In View.

将其无限期地分配给单个线程意味着您的最大活动请求处理器数量限制在数据库池的最大大小,这是可伸缩性的明确失败.