Ⅰ. JDBC(Java Database Connectivity) 란?
JDBC는 자바 애플리케이션이 데이터베이스와 연결하고, SQL을 실행하며 데이터를 송수신할 수 있도록 지원하는 Java 표준 API입니다. 이를 통해 개발자는 데이터베이스에 독립적인 방식으로 SQL 쿼리를 실행하고, 결과를 처리할 수 있습니다.
Ⅱ. JDBC(Java Database Connectivity) 기능
자바 애플리케이션과 DBMS 간의 통신을 중계해 주는 핵심 기술입니다.
ⅰ. 데이터베이스 연결 및 연결 해제
ⅱ. SQL 문 실행 (조회, 삽입, 수정, 삭제 등)
ⅲ. 쿼리 결과 처리
ⅳ. 트랜잭션 제어
Ⅲ. JDBC(Java Database Connectivity) 구조
Java Application ⇄ JDBC API ⇄ JDBC Driver ⇄ DBMS |
Ⅳ. JDBC(Java Database Connectivity) 구성요소
구성요소 | 설명 |
Connection | 데이터베이스와의 연결을 관리 |
Statement SQL | 쿼리를 실행하는 객체 |
ResultSet SQL | 실행 결과를 저장하고 처리하는 객체 |
※ 참고: JDBC API는 표준 인터페이스이며, 각 DBMS에 맞는 JDBC 드라이버를 통해 실제 연결이 수행됩니다.
드라이버는 각 DBMS 업체에서 제공하며, 프로젝트에 포함하고 CLASSPATH에 등록해야 합니다.
Ⅴ. JDBC(Java Database Connectivity) 동작 흐름
ⅰ. JDBC 드라이버 로드
먼저, 해당 DBMS에 맞는 JDBC 드라이버 클래스를 로드합니다.
(JDBC 4.0 / Java 6 이상에서는 자동 로드 가능)
Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 드라이버 예시 |
ⅱ. 데이터베이스 연결
DriverManager를 통해 데이터베이스에 연결하고, Connection 객체를 반환받습니다.
Connection conn = DriverManager.getConnection(url, user, password); |
ⅲ. SQL 실행
Statement 또는 PreparedStatement 객체를 사용하여 SQL 쿼리를 실행합니다.
Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); |
ⅳ. 결과 처리
ResultSet 객체를 통해 쿼리 결과를 순차적으로 읽어옵니다.
while (rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); } |
ⅴ. 리소스 해제 (Close)
사용한 JDBC 객체는 반드시 해제해야 합니다. 연결 해제는 리소스 누수 방지와 성능 유지에 매우 중요합니다.
해제 순서는 다음과 같습니다
rs.close(); stmt.close(); conn.close(); |
Ⅵ. JDBC(Java Database Connectivity) Connection Pool(커넥션 풀)
기본 JDBC 연결 방식은 매번 새로운 연결을 생성하고 해제하기 때문에 성능 저하와 리소스 낭비가 발생할 수 있습니다.
이를 해결하기 위해 JDBC 커넥션 풀을 사용합니다. 커넥션 풀은 미리 일정 수의 Connection 객체를 생성하여 풀(Pool)에 보관하고, 필요할 때 가져다 사용하며, 사용 후 반환하여 재사용하는 방식입니다.
ⅰ. Connection Pool(커넥션 풀) 장점
1) 연결 생성 비용 절감
2) DB 연결 횟수 최소화
3) 애플리케이션 성능 향상
ⅱ. 대표적인 Connection Pool(커넥션 풀) 라이브러리
1) HikariCP (가장 가볍고 빠름)
2) Apache DBCP
3) C3P0
Ⅶ. JDBC(Java Database Connectivity) 정리
항목 | 설명 |
JDBC 목적 | 자바와 데이터베이스 간 통신 및 SQL 실행 |
핵심 구성요소 | Connection, Statement, ResultSet |
주요 동작 흐름 | 드라이버 로드 → DB 연결 → SQL 실행 → 결과 처리 → 종료 |
커넥션 풀 필요성 | 성능 최적화 및 자원 효율성 향상 |
'어플리케이션' 카테고리의 다른 글
이메일(e-mail) 전송 흐름에 대해 알아보겠습니다. (0) | 2025.06.13 |
---|---|
쿠키, 캐시, 세션이 무엇이고, 왜 중요한지 알아보겠습니다. (1) | 2025.06.12 |
미디어위키(MediaWiki)에 대해 알아보겠습니다. (1) | 2025.06.09 |
YARA(Yet Another Recursive Acronym)에 대해 알아보겠습니다. (0) | 2025.06.03 |
라이프키퍼(LifeKeeper)에 대해 알아보겠습니다. (0) | 2025.05.30 |