Как вернуть соединение в c3p0
Я использую c3p0 - ComboPooledDataSource. Я инициализирую один раз, как показано ниже.
private void init() {
cpds = new ComboPooledDataSource();
cpds.setDriverClass(driverName);
cpds.setJdbcUrl(url);
cpds.setUser(userName);
cpds.setPassword(pwd);
}
Я получаю соединение из пула, как показано ниже
public synchronized Connection getLocalConnection(String ipAddr)
throws SQLException {
return cpds.getConnection();
}
Но я не уверен, вернем ли его путь обратно к пулу, когда я закончу выполнение запроса. Я думаю,
conn.close()
просто возвращает соединение обратно в пул вместо ДЕЙСТВИТЕЛЬНОГО ЗАКРЫТИЯ соединения.
Правильно ли я, или есть другой способ? Помощь Pls.
Ответы
Ответ 1
Это инициализирующий код
private DataSource init() {
DataSource unpooled = DataSources.unpooledDataSource(DB_URL, DB_USERNAME, DB_PASSWORD);
Map<String, Object> overrideProps = new HashMap<String, Object>();
overrideProps.put("maxPoolSize", MAX_POOL_SIZE);
overrideProps.put("minPoolSize", MIN_POOL_SIZE);
return DataSources.pooledDataSource(unpooled, overrideProps);
}
И вы получаете соединение с DataSource.
public Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
И чтобы закрыть соединение, просто вызовите метод close().
connection.close();