2 minute read

JDBC(Java Database Connectivity)는 Java 애플리케이션에서 데이터베이스에 접근할 수 있게 해주는 Java API이다. 이를 통해 개발자는 다양한 관계형 데이터베이스에 연결하고 SQL 쿼리를 실행할 수 있다.

1. 주요 특징

  • 표준화된 인터페이스 : JDBC는 자바 플랫폼의 표준 부분으로, 일관된 API를 제공한다. 이를 통해 개발자는 특정 데이터 베이스에 종속되지 않는 코드를 작성 할 수 있다.
  • 데이터베이스 독립성 : JDBC는 다양한 데이터베이스와 호환된다. 개발자는 데이터베이스 종류에 관계없이 동일한 코드를 사용할 수 있다.

2. JDBC 구조

JDBC는 크게 JDBC API와 JDBC Driver로 구성된다.

2.1 JDBC API

JDBC API는 자바 애플리케이션에서 데이터베이스 작업을 수행하기 위한 인터페이스를 제공한다. 주요 구성요소는 다음과 같다.

  • DriverManager
  • Connection
  • Statement
  • ResultSet

2.2 JDBC Driver

JDBC Driver는 JDBC API의 구현체로, 특정 데이터베이스와의 통신을 담당한다. 주요 JDBC Driver 유형은 다음과 같다.

  • MySQL : com.mysql.jdbc*
  • Oracle : oracle.jdbc*
  • MS-SQL : con.microsoft.sqlserver.jdbc*

3. JDBC 동작 과정

3.1 연결 과정 (Connection)

  1. DriverManager.getConnection() 메서드 호출
  2. 적절한 JDBC Driver 선택
  3. 선택된 Driver를 통해 데이터베이스에 연결
  4. Connection 객체 반환

3.2 데이터 조작 과정 (DML: insert/update/delete)

  1. Connection 객체에서 createStatement() 메서드 호출
  2. Statement 객체 생성
  3. executeUpdate() 메서드를 통해 SQL 실행
  4. 데이터베이스에서 결과 반환

3.3 데이터 조회 과정 (select)

  1. Connection 객체에서 createStatement() 메서드 호출
  2. Statement 객체 생성
  3. executeQuery() 메서드를 통해 SQL 실행
  4. ResultSet 객체 반환
  5. next(), getXXX() 메서드를 통해 데이터 접근

4. JDBC 주요 인터페이스

4.1 Driver 인터페이스

  • JDBC Driver의 기본 인터페이스
  • 데이터베이스와의 연결을 담당

4.2 Connection 인터페이스

  • 데이터베이스와의 세션을 나타냄
  • Statement 객체 생성, 트랜잭션 관리 등을 담당

4.3 Statement 인터페이스

  • SQL 문을 실행하고 결과를 반환하는 역할
  • PreparedStatement, CallableStatement 등의 하위 인터페이스 존재

4.4 ResultSet 인터페이스

  • SELECT문 실행하여 SQL 쿼리의 결과를 나타냄(서버에서 결과를 가져오는 객체일뿐 결과가 아니다!)
  • 결과 집합을 순회하고 데이터에 접근하는 메서드 제공

5. JDBC 사용 예시

// 1. 데이터베이스 연결
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "username", "password");

// 2. Statement 생성
Statement stmt = con.createStatement();

// 3. SQL 실행
ResultSet rs = stmt.executeQuery("SELECT * FROM users");

// 4. 결과 처리
while (rs.next()) {
    String name = rs.getString("name");
    int age = rs.getInt("age");
    System.out.println(name + " : " + age);
}

// 5. 자원 해제
rs.close();
stmt.close();
con.close();

6. JDBC의 장점

  1. 데이터베이스 독립성: 다양한 데이터베이스에 일관된 방식으로 접근 가능
  2. 간편한 데이터베이스 전환: Driver만 교체하면 다른 DBMS로 전환 가능
  3. 표준화된 API: Java SE의 일부로 표준화되어 있어 안정적이고 지속적인 지원

7. 주의사항

  1. 연결 관리: 데이터베이스 연결은 비용이 많이 드는 작업이므로, 커넥션 풀 사용 고려
  2. 보안: SQL Injection 등의 보안 위협에 대비하여 PreparedStatement 사용 권장
  3. 예외 처리: SQLException 등 JDBC 관련 예외를 적절히 처리해야 함

JDBC는 자바 기반 애플리케이션에서 데이터베이스 작업을 수행하기 위한 필수적인 기술이다. 적절한 사용을 통해 효율적이고 안전한 데이터베이스 접근이 가능하다.

Leave a comment