java JDBC连接句柄应该是perapp、perthread还是perquery? 3 周,4 日 Questions & Answers 905 假设我们在应用服务器上有一个支持JDBC连接池的web应用程序或web服务 我应该在每个线程或每个查询的基础上获取一个新的Connection强> 谢谢
# 1 楼答案 希望您在每个事务工作单元的基础上获取它们 每个查询意味着您的系统中从来没有跨越多个查询的逻辑工作单元。(也许这是真的,但你可能还是想考虑一下未来!) 每个线程(我认为这意味着请求的范围是有限的,而不是整个线程的生命周期?)这可能会导致持有它们的时间超过绝对必要的时间,但它确实允许您更好地管理事务。(这是很多领先的框架在很长一段时间内发挥作用的方式。如果你想在它上面做一些谷歌fu的话,这是一种被称为开放实体管理器的模式) 无限期地将其分配给单个线程意味着活动请求处理器的最大数量限制为数据库池的最大大小,这在可伸缩性方面是一个明显的失败
# 1 楼答案
希望您在每个事务工作单元的基础上获取它们
每个查询意味着您的系统中从来没有跨越多个查询的逻辑工作单元。(也许这是真的,但你可能还是想考虑一下未来!)
每个线程(我认为这意味着请求的范围是有限的,而不是整个线程的生命周期?)这可能会导致持有它们的时间超过绝对必要的时间,但它确实允许您更好地管理事务。(这是很多领先的框架在很长一段时间内发挥作用的方式。如果你想在它上面做一些谷歌fu的话,这是一种被称为开放实体管理器的模式)
无限期地将其分配给单个线程意味着活动请求处理器的最大数量限制为数据库池的最大大小,这在可伸缩性方面是一个明显的失败
# 2 楼答案
每线程
每个新请求将获取一个新连接(新线程=新请求)。不需要为每个查询获取新连接,因为在每个查询之后,可以重用连接