Post

01 JDBC

01 JDBC

1. JDBC

1. JDBC

  • 자바에서 DB에 연결하고 SQL을 실행할 수 있도록 정의된 표준 API
  • 즉, 자바 애플리케이션 ↔ 데이터베이스 간의 통신을 담당하는 표준 인터페이스
  • DB 벤더(Oracle, MySQL, PostgreSQL 등)가 자기 DB용 JDBC 드라이버를 제공해야 사용 가능

2. JDBC 기능

기능설명관련 클래스/인터페이스
DB 연결DB와 연결을 맺고 세션을 유지DriverManager, Connection
SQL 실행SQL 쿼리를 작성하고 실행 (DML, DDL 등)Statement, PreparedStatement, CallableStatement
결과 조회SELECT 실행 결과(테이블 형태)를 자바에서 순회하며 꺼내기ResultSet
파라미터 바인딩SQL 안의 ? 위치에 안전하게 값 전달 (SQL Injection 방지)PreparedStatement
트랜잭션 관리commit(), rollback()을 통해 DB 작업 단위 제어Connection
예외 처리SQL 실행 중 발생한 오류를 예외로 전달SQLException
DB 벤더 추상화DB 벤더가 달라도 동일한 JDBC API로 접근 가능JDBC Driver (ex: mysql-connector-j, ojdbc)

3. JDBC 구성요소

  • DriverManager: DB 드라이버를 관리하고 Connection 제공
  • Connection: DB와의 세션 (트랜잭션 단위 관리)
  • Statement / PreparedStatement: SQL 실행 객체
  • ResultSet: SELECT 실행 결과 집합

4. JDBC 흐름

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/testdb";
        String user = "testuser";
        String password = "1234";

        try {
            // 1. 드라이버 로드 (최근엔 생략 가능)
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2. DB 연결
            Connection conn = DriverManager.getConnection(url, user, password);

            // 3. SQL 준비 및 실행
            String sql = "SELECT id, name FROM users WHERE id = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 1); // 첫 번째 ?에 1 대입

            // 4. 결과 받기
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                System.out.println(id + " : " + name);
            }

            // 5. 리소스 해제
            rs.close();
            pstmt.close();
            conn.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5. JDBC의 한계

  • 반복되는 코드가 많음: Connection 열고 닫기, try-catch, 자원 해제
  • SQL 직접 관리: SQL 문자열이 코드 안에 그대로 박혀 있음
  • DB 벤더별 문법 차이: SQL 호환성 문제 존재

2. DBMS

1. DBMS

  • 데이터베이스를 생성, 관리, 제어하는 소프트웨어
  • 데이터를 효율적으로 저장, 조회, 수정, 삭제할 수 있도록 지원
  • 트랜잭션 관리, 동시성 제어, 보안, 백업 기능 등 포함

2. DBMS

1. 관계형 DBMS (RDBMS)

  • 데이터가 테이블 형태(행과 열)로 구성됨
  • SQL을 사용하여 데이터 처리
  • 특징
    • 데이터 무결성 보장 (제약조건, 키, 외래키)
    • 트랜잭션 지원 (ACID)
  • 종류

    제품특징
    Oracle DB기업용, 고가, 안정성 높음
    MySQL오픈소스, 웹 서비스 많이 사용
    PostgreSQL오픈소스, 표준 준수, 기능 강력
    SQL ServerMS 제품, Windows 친화적
    MariaDBMySQL 기반, 오픈소스

2. NoSQL DB

  • 테이블 구조가 아닌 다양한 구조(JSON, Key-Value, Graph 등)
  • SQL 대신 자체 쿼리 언어나 API 사용
  • 특징
    • 스키마 유연, 수평 확장 용이
    • 대용량, 실시간 데이터 처리에 적합
  • 종류

    종류저장 방식특징
    Key-Value (Redis, Riak)Key-Value 형태, 디스크 또는 인메모리+디스크Redis는 기본 인메모리, 옵션으로 지속화(RDB, AOF) 가능
    Document (MongoDB, CouchDB)JSON/ BSON 문서 형태, 디스크 저장각 문서가 독립적으로 저장
    Column-Family (Cassandra, HBase)컬럼 단위 분산 저장대용량 분산 처리에 적합
    Graph (Neo4j)노드와 관계 그래프 형태디스크에 노드와 관계 구조를 저장

3. NewSQL / In-Memory DB

  • 관계형 DBMS + NoSQL 확장 특성
  • 특징
    • ACID 트랜잭션 유지 + 대규모 분산 처리
  • 대표 제품: VoltDB, MemSQL, SAP HANA
This post is licensed under CC BY 4.0 by the author.