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

时间:2010-10-20 20:22:27

标签: java web-services jdbc database-connection application-server

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

我应该在每个主题或每个查询的基础上抓取一个新的Connection吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

希望您在每个交易单位的基础上抓住它们。

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

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

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

答案 1 :(得分:1)

<强>每线程

每个新请求都将获取一个新连接(新线程=新请求)。无需为每个查询获取新连接,因为每次查询后都可以重用连接。