我想使用Apache Commons DBCP在 Java 应用程序中启用连接池(这里没有容器提供的数据源)。在 Web 的许多站点(包括Apache 站点)中,该库的使用基于以下代码段:
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("scott");
ds.setPassword("tiger");
ds.setUrl(connectURI);
然后你通过 getConnection() 方法获得你的数据库连接。但在其他站点上 - 以及Apache 站点也是- Datasource 实例是通过以下方式创建的:
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,null);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory);
ObjectPool objectPool = new GenericObjectPool(poolableConnectionFactory);
PoolingDataSource dataSource = new PoolingDataSource(objectPool);
他们之间有什么区别?我正在使用连接池BasicDataSource
,或者我需要一个实例PoolingDataSource
来使用连接池?是BasicDataSource
线程安全的(我可以将它用作类属性)还是我需要同步它的访问?