1. JDBC Statement 및 실행 메서드
1) Statement 종류
- Statement: 기본 SQL문 실행 인터페이스
- PreparedStatement: 매개변수화된 SQL문 실행 (SQL 인젝션 방지 및 성능 향상)
- CallableStatement: 데이터베이스 내의 저장 프로시저(Stored Procedure)를 호출할 때 사용 (필기 내용 중 미기재된 1가지)
2) 주요 실행 메서드
- execute(): 모든 종류의 SQL문에 사용 (리턴값: boolean, ResultSet 여부)
- executeQuery(): SELECT문 실행 시 사용 (리턴값: ResultSet)
- executeUpdate(): INSERT, UPDATE, DELETE 등 데이터 변경 시 사용 (리턴값: 영향을 받은 행의 수 int)
2. DB 연결 및 설정 관리 (JDBC Driver & Properties)
1) 드라이버 로드 및 연결 방식
- 과거 방식: Class.forName("com.mysql.cj.jdbc.Driver")를 이용해 드라이버 구현체 클래스를 동적으로 로드함.
- 설정 파일 관리 (db.properties):
- Java의 Properties 클래스는 .properties 파일과 1:1로 매핑됨.
- getResourceAsStream("db.properties")를 사용해 클래스패스(리소스 디렉토리) 내의 상대 경로로 설정 파일을 읽어옴.
- DriverManager.getConnection(...)을 호출하여 DB 커넥션을 획득.
2) DataSource
- DriverManager 대신 커넥션 풀(Connection Pool) 관리 및 DB 연결 객체를 효율적으로 제공하기 위한 표준 인터페이스.
3. 트랜잭션(Transaction) 제어
1) 수동 커밋 모드 전환
- con.setAutoCommit(false);
- 기본 설정인 단건 Auto Commit을 비활성화하여, 여러 DML 작업(INSERT, UPDATE, DELETE)을 하나의 트랜잭션 단위로 묶음.
- 데이터 조회(SELECT)는 커밋이 필요 없으나, 데이터 변경 작업은 트랜잭션 단위 제어가 필수적임.
2) Savepoint & Rollback
- Savepoint save1 = con.setSavepoint();: 트랜잭션 중간에 특정 저장을 위한 지점을 설정.
- con.rollback(save1);: 예외 발생 시 지정한 Savepoint 시점으로 변경 사항을 되돌림.
4. 데이터베이스 커밋(Commit)과 내부 동작 메커니즘
커밋의 본질(핵심 개념)은 메모리상에서 작업 중인 변경 내용을 매스 스토리지(비휘발성 저장소)에 영속화(Persistence)하겠다는 의미.
1) DB 내부 처리 순서 (예: MySQL InnoDB)
- Buffer Pool 수정: 메모리 상의 데이터 페이지를 수정 (휘발성).
- Redo Log 작성: 변경 내역을 복구/롤백용 로그에 기록.
- Commit 요청: 사용자가 커밋을 수행.
- Redo Log Flush: Redo Log를 디스크로 Flush (write, fsync 호출).
- 데이터 파일(.ibd) 기록: 실제 데이터 파일은 디스크에 나중에 비동기적으로 기록됨.
2) 주요 포인트
- Commit 시점의 오해: Commit 시점에 실제 DB 테이블 데이터 파일(.ibd)이 즉시 하드디스크에 갱신되는 것은 아님.
- Write-Back 캐시 & OS 입출력 정책: 앱(InnoDB 엔진)은 OS의 파일 시스템 API(write, fsync)를 통해 스토리지에 접근하며, 성능을 위해 OS 캐시 및 버퍼링 정책을 거쳐 모아서 저장된다.
5. 대용량 데이터 처리 (Clob / Blob)
- Clob (Character Large Object): 장문의 텍스트 데이터를 저장하는 데이터 타입.
- Java에서 con.createClob()을 통해 생성 및 조작
- getSubString()을 통해 부분 문자열(Excerpt) 추출 가능
- Blob (Binary Large Object): 바이너리 데이터(이미지, 영상, 파일 등)를 저장하는 데이터 타입.
- ⚠️ 주의: DBMS 종류에 따라 Clob/Blob 지원 여부 및 관련 세부 데이터 타입명이 다를 수 있음.
'Tech Stack > Database' 카테고리의 다른 글
| 🗃️JPA 엔티티 매핑 기본 전략 (Identity, Sequence) (0) | 2026.07.10 |
|---|---|
| 🗃️ [JPA-03] JPA 아키텍처 구조 및 주요 API 동작 원리 (0) | 2026.07.09 |
| 🍃 JDBC, JPA 환경에 사용할 데이터베이스 설치 및 환경 설정(의존성) (0) | 2026.07.09 |
| 🗃️[JPA-02] JPA 엔티티와 영속성 컨텍스트 핵심 (+생명주기) (0) | 2026.07.09 |
| 🔌[JDBC] JDBC 개요 및 데이터베이스 연결 원리 (0) | 2026.07.09 |