Искам да използвам Apache Commons DBCP, за да активирам обединяването на връзките в приложение на Java (няма осигурен от контейнер DataSource в това). В много сайтове в мрежата - включително Apache сайт- използването на библиотеката се базира на този фрагмент:
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setUsername("scott");
ds.setPassword("tiger");
ds.setUrl(connectURI);
След това получавате вашите DB връзки чрез метода 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
(мога ли да го използвам като атрибут на клас) или трябва да синхронизирам достъпа му?