DriverManager.getConnection 메서드를 사용하여 데이터베이스 연결을 열고 닫는 작업은 시간이 걸립니다. 특히 웹 애플리케이션에서는 매 사용자 액션마다 새로운 데이터베이스 연결을 열기보다는 항상 열려 있고 사용자 간에 공유되는 소규모 커넥션 풀을 사용하는 것이 좋습니다.
JDBC 커넥션 풀의 목적은 다음과 같습니다. 커넥션 풀은 소수의 데이터베이스 연결을 열어 두고, 매번 직접 데이터베이스 연결을 여는 대신 커넥션 풀에서 이 중 하나를 요청하여 사용할 수 있습니다.
JDBC 커넥션 풀
- Apache Commons DBCP 및 C3P0
- HikariCP(추천)
- Vibur-dbcp
- Oracle's UCP
- Tomcat JDBC Connection Pool
JDBC 커넥션 풀 사용법
JDBC 코드에서는 더 이상 DriverManager를 통해 직접 연결을 하지 않고, DataSource 인터페이스로 나타내어지는 커넥션 풀을 구성한 후, 그 풀에서 연결을 요청하게 됩니다.
package com.marcobehler;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class MyHikariCpClass {
public static void main(String[] args) throws SQLException {
DataSource dataSource = createDataSource();
try (Connection conn = dataSource.getConnection()) {
boolean isValid = conn.isValid(0); // "0"은 유효성 검사 시 타임아웃을 비활성화하는 것을 의미
System.out.println("유효한 DB 연결인가? = " + isValid);
// 연결을 사용하여 SQL 문 실행
}
}
private static DataSource createDataSource() {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost/test?serverTimezone=UTC");
ds.setUsername("myUsername");
ds.setPassword("myPassword");
return ds;
}
}
'Databases > JDBC' 카테고리의 다른 글
[JDBC] 출력 스트림 사용하기 (0) | 2024.07.08 |
---|---|
[JDBC] Stored Procedure(저장 프로시저) 사용하기 (0) | 2024.07.08 |
[JDBC] Batch Processing(일괄 처리) (0) | 2024.07.08 |
[JDBC] 예외 처리 (0) | 2024.07.08 |
[JDBC] Transactions 사용법 (0) | 2024.07.05 |