BACKEND [Kamranahmedse Roadmap]/DB

JDBC란 무엇인가?

Alex Han 2025. 3. 19. 20:09
반응형

JDBC(Java Database Connectivity)는 Java에서 데이터베이스와 연결하여 데이터를 조회, 삽입, 수정, 삭제할 수 있도록 도와주는 Java의 표준 API입니다.

 

JDBC로 DB관리하기

 

JDBC를 통해 데이터 입력, 삭제, 조회하기

JDBC란 무엇인가 JDBC란 무엇인가?JDBC(Java Database Connectivity)는 Java에서 데이터베이스와 연결하여 데이터를 조회, 삽입, 수정, 삭제할 수 있도록 도와주는 Java의 표준 API입니다.   📌 JDBC란?JDBC는 Ja

jyhan0625.tistory.com

 

 

 


📌 JDBC란?

JDBCJava 프로그램과 데이터베이스(DBMS) 사이의 통신을 가능하게 하는 인터페이스(Interface) 모음입니다. 즉, Java API 입니다.

 

Java에서 DB 작업을 하려면, 단순히 SQL을 실행하는 것만으로 끝나는 것이 아니라, DB 연결, SQL 실행, 결과 처리, 연결 종료 등의 일련의 과정이 필요합니다.

이 과정을 JDBC가 표준화해 놓은 것이죠.

 

 

 


🟦 JDBC 주요 구성 요소

구성 요소 설명
DriverManager DB 연결을 관리. 특정 DB의 JDBC 드라이버를 로딩.
Connection DB와 실제 연결하는 객체.
Statement / PreparedStatement SQL 문장을 실행하는 객체.
ResultSet SQL 조회 결과를 담는 객체.
SQLException DB 작업 중 발생하는 예외 처리 클래스.

 

 

 


🟢 JDBC 작동 흐름

 

1. JDBC 드라이버 로드

특정 DBMS의 드라이버 클래스를 로드해야 합니다.

Class.forName("com.mysql.cj.jdbc.Driver");

 

2. DB 연결(Connection)

DriverManager를 통해 DB에 접속합니다.

Connection conn = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/mydb", "username", "password"
);

 

3. SQL 실행(Statement / PreparedStatement)

SQL을 실행할 객체를 생성해 쿼리를 실행합니다.

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");

 

4. 결과 처리(ResultSet)

조회 결과를 가져와 사용합니다.

while(rs.next()) {
    System.out.println(rs.getString("name"));
}

 

5. 연결 종료

자원 낭비를 막기 위해 반드시 닫아야 합니다.

rs.close();
stmt.close();
conn.close();

 

예시 코드

import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) {

        // 1. DB 연결 정보
        String url = "jdbc:mysql://localhost:3306/mydb"; // DB 주소와 DB명
        String user = "root"; // 사용자 이름
        String password = "1234"; // 비밀번호

        // 2. JDBC 객체 선언
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 3. 드라이버 로드
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("드라이버 로드 성공!");

            // 4. DB 연결
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("DB 연결 성공!");

            // 5. SQL 실행
            String sql = "SELECT id, name, email FROM users";
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);

            // 6. 결과 처리
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String email = rs.getString("email");

                System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
            }

        } catch (ClassNotFoundException e) {
            System.out.println("JDBC 드라이버 로드 실패: " + e.getMessage());
        } catch (SQLException e) {
            System.out.println("SQL 오류: " + e.getMessage());
        } finally {
            // 7. 자원 해제 (반드시 닫아줘야 함!)
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
                System.out.println("자원 해제 완료.");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

 

 

 


🟨 Statement vs PreparedStatement

구분 Statement PreparedStatement
SQL 처리 문자열로 직접 작성 미리 컴파일된 SQL, 파라미터 바인딩 지원
보안 SQL Injection 위험 SQL Injection 방지
성능 매번 SQL 분석 재사용 가능, 성능 좋음
가독성 파라미터 삽입 불편 ?로 가독성 높음

 

실무에서는 PreparedStatement가 훨씬 더 자주 사용됩니다.

 

 

 


🟣 JDBC의 단점

1. 반복 코드 많음: 연결, 닫기, 예외처리 반복.

2. 자원 관리 어려움: 연결 종료 누락 시 메모리 누수.

3. SQL 하드코딩: 유지보수 어렵고, DB 변경 시 수정 필요.

4. 트랜잭션 관리 복잡: 수동으로 커밋/롤백해야 함.

 

이런 단점 때문에, JDBC를 감싸고 더 쉽게 사용하는 라이브러리Spring JDBC, JPA, MyBatis 같은 프레임워크가 많이 쓰입니다.

 

 

 


🟢 JDBC Driver 종류

1. JDBC-ODBC Bridge Driver (1세대) - 거의 사용 안 함.

2. Native-API Driver (2세대).

3. Network Protocol Driver (3세대).

4. Thin Driver (4세대)가장 많이 사용. Java로 작성, 플랫폼 독립적.

 

MySQL용 드라이버: mysql-connector-java

Oracle용 드라이버: ojdbc

 

 

 


📌 정리

JDBC는 Java에서 데이터베이스와 연결하고 SQL을 실행하기 위한 표준 API입니다.

핵심 객체: DriverManager, Connection, Statement, PreparedStatement, ResultSet.

사용 과정: 드라이버 로드 → 연결 → SQL 실행 → 결과 처리 → 자원 종료.

단순하지만 반복 코드가 많고, 유지보수 어려움 → Spring JDBC, JPA 등으로 보완 가능.

반응형