所以,我意识到数据库池可能有比 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?它从未使用过,从查看源代码来看,我看不出它实际上将构造函数中的任何东西联系在一起,或者除了设置它自己的私有变量之外还有什么神奇的作用。JDBC 站点的信息相当神秘,我对源代码的所有挖掘都让我感到困惑。有理由这样做吗?显然,您也可以只用 new 实例化对象,而无需实际将其分配给变量,这就足够了……让我更加困惑。