I am using c3p0 - ComboPooledDataSource. I am initializing once as below.
private void init() {
cpds = new ComboPooledDataSource();
cpds.setDriverClass(driverName);
cpds.setJdbcUrl(url);
cpds.setUser(userName);
cpds.setPassword(pwd);
}
I am getting a connection from the pool as below
public synchronized Connection getLocalConnection(String ipAddr)
throws SQLException {
return cpds.getConnection();
}
But i am not sure whether its the right way to return the connection back to the pool when i finish executing a query. I guess the
conn.close()
just returns the connection back to the pool instead of REALLY CLOSING the connection. Am i correct or is there any other way around? Pls help.
c3p0 is a Java library that provides a convenient way for managing database connections. In short, it achieves this by creating a pool of connections. It also effectively handles the cleanup of Statements and ResultSets after use.
C3p0 is an open-source JDBC connection pooling library, with support for caching and reuse of PreparedStatements. Hibernate provides support for Java applications to use c3p0 for connection pooling with additional configuration settings.
maxConnectionAge - Integer representing the timeout for the idle DB connection (value of -1 never releases the connection). This property closes connections to the database if a query hasn't been made within the timeout period.
acquireIncrement determines how many Connections a c3p0 pool will attempt to acquire when the pool has run out of Connections. (Regardless of acquireIncrement, the pool will never allow maxPoolSize to be exceeded.)
This is initializing code
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);
}
And you get connection from DataSource.
public Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
And to close the connection just call close() method.
connection.close();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With