gpt4 book ai didi

java - 为什么我们要创建 PoolableConnectionFactory 对象

转载 作者:行者123 更新时间:2023-12-01 15:16:25 25 4
gpt4 key购买 nike

所以,我意识到数据库池可能有比 JDBC 更好的选择,但仍然有一些东西让我发疯。在所有示例代码中,他们建议像这样进行池化。

GenericObjectPool connectionPool = new GenericObjectPool(null);

ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(url, un, pw);

PoolableConnectionFactory poolableConnectionFactory =
new PoolableConnectionFactory(connectionFactory, connectionPool, null, "SELECT 1", false, true);
PoolingDataSource dataSource = new PoolingDataSource(connectionPool);

return dataSource;

为什么要创建 PoolableConnectionFactory?它从未被使用过,从源代码来看,我看不出它实际上在构造函数中将任何东西联系在一起,或者除了设置它自己的私有(private)变量之外还做了任何神奇的事情。 JDBC 站点的信息相当神秘,我对源代码的所有挖掘都让我感到困惑。有理由这样做吗?显然,你也可以只用 new 实例化对象,而不实际将其分配给变量,这就足够了......让我更加困惑。

最佳答案

假设这些类是公共(public) DBCP 类,PoolableConnectionFactory 的构造函数将正在创建的实例注册为作为参数传递的池工厂:

_pool = pool;
_pool.setFactory(this);

因此,创建工厂会创建它,并使池在需要时使用它来创建新连接。

关于java - 为什么我们要创建 PoolableConnectionFactory 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com