🚀 Master Java database programming, connection pooling, and Oracle JDBC!
🔔 Subscribe to Ram N Java on YouTubeWhat Is Apache Commons DBCP DataSource?
Opening and closing physical database connections directly via DriverManager for every client request creates significant CPU and network overhead. In enterprise applications, connection pooling is used to manage and reuse a pool of active database connections.
Apache Commons DBCP (Database Connection Pool) provides the BasicDataSource class (from org.apache.commons.dbcp), which implements javax.sql.DataSource. It encapsulates database credentials and connection parameters, efficiently maintaining a pool of pre-established connections for reuse.
Required Dependencies
To use DBCP connection pooling in your Java project, ensure the following JAR files are present on your classpath:
commons-dbcp.jarcommons-pool.jarojdbc.jar(Oracle JDBC Driver)
Complete Java Source Code Example
The following Java program creates and configures a BasicDataSource, gets a connection from the pool, queries the Oracle EMPLOYEES table in the HR schema, and displays employee records:
package com.ram.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class DBCPDataSourceDemo {
static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:xe";
static final String USER = "hr";
static final String PASS = "hr";
// Method to create and configure the BasicDataSource instance
public static DataSource getDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(JDBC_DRIVER);
ds.setUrl(DB_URL);
ds.setUsername(USER);
ds.setPassword(PASS);
return ds;
}
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Obtain DataSource
DataSource dataSource = getDataSource();
// Borrow connection from DBCP pool
conn = dataSource.getConnection();
stmt = conn.createStatement();
String sql = "SELECT employee_id, first_name, last_name, email, phone_number FROM employees";
rs = stmt.executeQuery(sql);
System.out.println("ID | Name | Email | Phone");
System.out.println("----------------------------------------");
while (rs.next()) {
int empId = rs.getInt("employee_id");
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
String email = rs.getString("email");
String phone = rs.getString("phone_number");
System.out.println(empId + " | " + firstName + " " + lastName + " | " + email + " | " + phone);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// Clean up resources (closing connection returns it back to the pool)
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
Key Steps & Best Practices
-
Configure BasicDataSource: Set the driver class name, JDBC URL, username, and password via setter methods on
BasicDataSource. -
Program to Interfaces: Keep the return type as standard
javax.sql.DataSourceto decouple application code from specific connection pooling libraries. -
Connection Recycling: Calling
conn.close()on a pooled connection does not terminate the physical database link; it returns the connection back to the DBCP pool for reuse. -
Always ensure
ResultSet,Statement, andConnectionare closed in afinallyblock to avoid connection starvation in the pool.
Related Tutorials You Might Enjoy
Click here to watch in Youtube : https://www.youtube.com/watch?v=s_h54qI0npE
Click the below Image to Enlarge
![]() |
| JDBC DBCP DataSource - Oracle |
![]() |
| JDBC DBCP DataSource - Oracle |
![]() |
| JDBC DBCP DataSource - Oracle |



No comments:
Post a Comment