Apache Commons DBCPを使用して、Javaアプリケーションで接続プールを有効にしたい(これにはコンテナーが提供するデータソースはありません)。Apacheサイトを含むWebの多くのサイトでは、ライブラリの使用法は次のスニペットに基づいています。
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("scott");
ds.setPassword("tiger");
ds.setUrl(connectURI);
次に、getConnection()メソッドを介してDB接続を取得します。しかし、他のサイト(およびApacheサイト)では、データソースインスタンスは次の方法で作成されます。
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(connectURI,null);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory);
ObjectPool objectPool = new GenericObjectPool(poolableConnectionFactory);
PoolingDataSource dataSource = new PoolingDataSource(objectPool);
それらの違いは何ですか?で接続プールを使用してBasicDataSource
いますか、それとも接続プールを使用するためのインスタンスが必要PoolingDataSource
ですか?スレッドセーフですかBasicDataSource
(クラス属性として使用できますか)、またはアクセスを同期する必要がありますか?