본문 바로가기
IT개발/JAVA

JDBC(Java Database Connectivity) (자바/백엔드개발/SQL/Java)

by 시간기억자 2024. 11. 18.
반응형

JDBC란?

  • JDBC(Java Database Connectivity)는 자바 프로그래밍 언어에서 데이터베이스와 연결하고 상호작용하기 위한 API입니다. JDBC를 사용하면 자바 애플리케이션이 다양한 관계형 데이터베이스에 접근할 수 있습니다.

 

1. JDBC의 개념

  • 목적: JDBC는 자바 애플리케이션과 데이터베이스 간의 데이터 전송을 가능하게 하는 인터페이스입니다. 이를 통해 SQL 쿼리를 실행하고, 결과를 가져오는 등의 작업을 수행할 수 있습니다.
  • 플랫폼 독립성: 자바는 "한 번 작성하면, 어디서나 실행"이라는 원칙을 따르므로, JDBC를 사용하면 다양한 데이터베이스에 대해 동일한 코드로 접근할 수 있습니다.

 

2. JDBC의 구성 요소

JDBC는 다음과 같은 주요 구성 요소로 이루어져 있습니다.

 

1) JDBC 드라이버: 데이터베이스와의 연결을 관리하는 소프트웨어입니다. 각 데이터베이스에 맞는 드라이버를 사용해야 합니다. 드라이버는 크게 네 가지 유형으로 나눌 수 있습니다:

  • JDBC-ODBC 브리지 드라이버: ODBC를 통해 데이터베이스에 연결 (구식)
  • 네이티브 API 드라이버: 데이터베이스의 네이티브 API를 사용하여 연결
  • 순수 Java 드라이버: 순수 자바로 작성된 드라이버로, 데이터베이스와의 연결을 위해 JDBC API를 사용
  • 통합 드라이버: 여러 데이터베이스에 대한 지원을 포함하는 드라이버

 

2) Connection: 데이터베이스와의 연결을 나타내는 객체입니다. 이 객체를 통해 SQL 문을 실행하고 결과를 받을 수 있습니다.

3) Statement: SQL 문을 데이터베이스에 전달하는 객체입니다. SQL 문을 실행하고, 결과를 가져오는 역할을 합니다.

  • Statement: 일반 SQL 문을 실행
  • PreparedStatement: 파라미터화된 SQL 문을 실행 (SQL 인젝션 방지)
  • CallableStatement: 저장 프로시저를 호출하는 데 사용

 

4) ResultSet: SQL 쿼리 실행 결과를 저장하는 객체입니다. 이 객체를 통해 데이터베이스에서 반환된 데이터를 읽을 수 있습니다.

 

3. JDBC 사용 방법

JDBC를 사용하여 데이터베이스와 상호작용하는 기본적인 흐름은 다음과 같습니다:

 

  1. JDBC 드라이버 로드: JDBC 드라이버를 메모리에 로드합니다.
  2. 데이터베이스 연결: DriverManager를 사용하여 데이터베이스에 연결합니다.
  3. SQL 문 실행: Statement 또는 PreparedStatement를 사용하여 SQL 문을 실행합니다.
  4. 결과 처리: ResultSet을 사용하여 쿼리 결과를 처리합니다.
  5. 자원 해제: 연결 및 기타 자원을 닫습니다.

 

요약

  • JDBC: 자바에서 데이터베이스와 상호작용하기 위한 API입니다.
  • 구성 요소: JDBC 드라이버, Connection, Statement, ResultSet 등이 있습니다.
  • 사용 방법: 드라이버 로드, 데이터베이스 연결, SQL 실행, 결과 처리, 자원 해제로 구성됩니다.

 

JDBC는 자바에서 데이터베이스와의 연결을 관리하는 중요한 방법입니다. 이 기본 개념을 이해하면, 더 복잡한 데이터베이스 작업이나 ORM (Object-Relational Mapping) 라이브러리인 JPA와 같은 기술로 나아가는 데 도움이 됩니다.


예제코드

import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) {
        // JDBC URL, 사용자명, 비밀번호 설정
        String jdbcUrl = "jdbc:mysql://localhost:3306/your_database_name";
        String user = "your_username";
        String password = "your_password";

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            // 1. JDBC 드라이버 로드
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. 데이터베이스 연결
            connection = DriverManager.getConnection(jdbcUrl, user, password);

            // 3. SQL 문 실행
            statement = connection.createStatement();
            String sql = "SELECT * FROM employees"; // 직원 테이블에서 모든 데이터 조회
            resultSet = statement.executeQuery(sql);

            // 4. 결과 처리
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String position = resultSet.getString("position");
                System.out.println("ID: " + id + ", Name: " + name + ", Position: " + position);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 5. 자원 해제
            try {
                if (resultSet != null) resultSet.close();
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
반응형

댓글