JDBC
JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.
개요[편집]
JDBC(Java Database Connectivity)는 애플리케이션이 데이터베이스와 통신할 수 있도록 도와주는 API이다. Java 프로그램은 JDBC를 통해 데이터베이스에 연결하고, 쿼리를 실행하고, 데이터를 조회하거나 조작할 수 있다. JDBC 덕분에 Java 애플리케이션은 MySQL, Oracle, PostgreSQL 같은 다양한 관계형 데이터베이스와 쉽게 연동할 수 있다.
역사[편집]
썬 마이크로시스템즈는 1997년 2월 19일 JDBC를 JDK 1.1의 일부로 출시하였다. 그 뒤로 이제까지 자바 SE의 일부로 되고 있다.
JDBC 클래스는 자바 패키지 java.sql과 javax.sql에 포함되어 있다.
버전 3.1을 기점으로 JDBC는 자바 커뮤니티 프로세스를 통해 개발되고 있다. JSR 54는 JDBC 3.0을 규정(J2SE 1.4에 포함됨)하고, JSR 114는 JDBC Rowset addition을 규정하며, JSR 221은 JDBC 4.0의 사양(자바 SE 6에 포함됨)이다.
JDBC 4.1은 JSR 221의 유지보수판 1에 규정되어 있고, 자바 SE 7에 포함되어 있다.
최신 버전은 JDBC 4.2는 JSR 221의 유지보수판 2에 규정되어 있고, 자바 SE 8에 포함되어 있다.
JDBC 버전 | 발표 | 자바 플랫폼 | 중요한 변화 |
---|---|---|---|
JDBC 4.0 | JavaEE 6 예정 | JSR 221 | |
JDBC 3.0 | JavaEE 5 | JSR 54 | |
JDBC 2.0 | |||
JDBC 1.0 | J2SE 1.1 |
JDBC 아키텍처[편집]
- Application (애플리케이션): 데이터 소스와 통신하는 Java 애플리케이션이나 서블릿을 말한다.
- JDBC API: SQL 쿼리를 실행하고 결과를 가져오는 기능을 제공한다. 주요 구성 요소는 다음과 같다:
- 인터페이스: Driver, ResultSet, RowSet, PreparedStatement, Connection 등은 데이터베이스 작업을 관리한다.
- 클래스: DriverManager, Types, Blob, Clob 등은 데이터베이스 연결을 관리한다.
- DriverManager: JDBC 아키텍처에서 중요한 역할을 하며, 데이터베이스별 드라이버를 사용해 애플리케이션과 데이터베이스를 연결해 준다.
- JDBC 드라이버: 애플리케이션과 데이터베이스 간 상호작용을 처리한다.
JDBC 아키텍처는 2계층과 3계층 구조로 데이터베이스에 접근할 수 있다:
- 1. 2계층 아키텍처 (Two-Tier Architecture)
Java 애플리케이션이 JDBC 드라이버를 통해 데이터베이스와 직접 통신한다. 클라이언트/서버 구조에서는 사용자의 시스템이 클라이언트로 동작하며 원격 DB 서버와 연결된다.
구조:
scss 클라이언트 애플리케이션 (Java) → JDBC 드라이버 → 데이터베이스
- 2. 3계층 아키텍처 (Three-Tier Architecture)
사용자의 요청이 미들웨어 계층(애플리케이션 서버)으로 전달되고, 이 서버가 데이터베이스와 통신한다. 결과는 다시 사용자에게 반환된다.
구조:
클라이언트 애플리케이션 → 애플리케이션 서버 → JDBC 드라이버 → 데이터베이스
JDBC 구성 요소[편집]
JDBC는 데이터베이스와의 상호작용을 위해 다음과 같은 주요 구성 요소를 제공한다:
- 1. JDBC API
JDBC는 두 개의 주요 패키지를 통해 다양한 메서드와 인터페이스를 제공한다:
- java.sql: Java SE의 일부로, 기본 JDBC 기능(연결, 쿼리 실행, 결과 처리 등)을 제공한다.
- javax.sql: Java EE의 일부로, 커넥션 풀, 스테이트먼트 풀링, 데이터 소스 관리 등 고급 기능을 제공한다.
- 2. JDBC 드라이버 매니저 (DriverManager)
사용자 요청을 처리할 수 있도록 적절한 데이터베이스 드라이버를 로드하고 연결을 설정한다.
- 3. JDBC 테스트 스위트
JDBC 드라이버의 삽입, 삭제, 갱신 등의 동작을 테스트하는 도구이다.
- 4. JDBC 드라이버 유형
JDBC 드라이버는 Java에서 데이터베이스 요청을 DBMS가 이해할 수 있는 프로토콜로 변환한다. 총 4가지 유형이 있다:
- Type-1: JDBC-ODBC 브리지 드라이버 (사용 중단됨)
- Type-2: 네이티브 API 드라이버 (부분적으로 Java 기반)
- Type-3: 네트워크 프로토콜 드라이버 (완전 Java 기반)
- Type-4: Thin 드라이버 (완전 Java 기반, 가장 널리 사용됨)
기능[편집]
오라클 자료형 | setXXX() 메소드
|
---|---|
CHAR | setString()
|
VARCHAR2 | setString()
|
NUMBER | setBigDecimal()
|
setBoolean()
| |
setByte()
| |
setShort()
| |
setInt()
| |
setLong()
| |
setFloat()
| |
setDouble()
| |
INTEGER | setInt()
|
FLOAT | setDouble()
|
CLOB | setClob()
|
BLOB | setBlob()
|
RAW | setBytes()
|
LONGRAW | setBytes()
|
DATE | setDate()
|
setTime()
| |
setTimestamp()
|
예제[편집]
자바 애플리케이션이 데이터베이스 연결이 필요할 때 DriverManager.getConnection()
메소드들 가운데 하나를 사용하여 JDBC 연결을 만들게 된다. 사용된 URL은 특정 데이터베이스와 JDBC 드라이버에 의존한다. "jdbc:" 프로토콜로 무조건 시작하지만 나머지 부분은 특정 벤더에 따라 다르다.
Connection conn = DriverManager.getConnection( "jdbc:somejdbcvendor:other data needed by some jdbc vendor", "myLogin", "myPassword" ); try { /* you use the connection here */ } finally { //It's important to close the connection when you are done with it try { conn.close(); } catch (Throwable e) { /* Propagate the original exception instead of this one that you want just logged */ logger.warn("Could not close JDBC Connection",e); } }
자바 SE 7을 기점으로 자바의 try-with-resources 문을 사용하여 위의 코드를 더 깔끔하게 정리할 수 있다:
try (Connection conn = DriverManager.getConnection( "jdbc:somejdbcvendor:other data needed by some jdbc vendor", "myLogin", "myPassword" ) ) { /* you use the connection here */ } // the VM will take care of closing the connection
연결이 확립되면 다음과 같은 문을 작성할 수 있다.
try (Statement stmt = conn.createStatement()) { stmt.executeUpdate( "INSERT INTO MyTable( name ) VALUES ( 'my name' ) " ); }
JDBC 드라이버[편집]
JDBC 드라이버들은 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터이다. (서버가 아닌 클라이언트 머신에 설치)
타입[편집]
상용 및 자유 드라이버들은 대부분의 관계형 데이터베이스 서버로의 연결을 제공한다. 이 드라이버들은 다음의 타입 중 하나에 속한다:
- 타입 1: 로컬에서 사용 가능한 ODBC 드라이버의 네이티브 코드를 호출한다.
- 타입 2: 클라이언트 사이드의 데이터베이스 벤더 네이티브 라이브리를 호출한다. 그러면 이 코드는 네트워크 상의 데이터베이스와 통신하게 된다.
- 타입 3: 서버 사이드 미들웨어와 통신하는 순수 자바 드라이버로서, 이후에 데이터베이스와 통신한다.
- 타입 4: 데이터베이스 네이티브 프로토콜을 사용하는 순수 자바 드라이버이다.
참고자료[편집]
- "JDBC", 《위키백과》
- "JDBC (Java Database Connectivity)", GeeksforGeeks, 2025-04-17
같이 보기[편집]