1

假设我们在支持 JDBC 连接池的应用程序服务器上有一个 Web 应用程序或 Web 服务。

我应该Connection在每个线程还是每个查询的基础上获取一个新的?

谢谢!

4

2 回答 2

9

希望您在每个事务工作单元的基础上获取它们。

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

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

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

于 2010-10-20T20:29:27.453 回答
1

每线程

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

于 2010-10-20T20:38:44.147 回答