JDBC
JDBC(Java Database Connectivity)란? JDBC는 Java 언어에서 데이터베이스와 연동하기 위한 표준 API(Application Programming Interface)입니다.
즉, 자바 프로그램이 관계형 데이터베이스(RDBMS)에 접속하고 SQL 쿼리를 실행하여 데이터를 조회하거나 수정할 수 있도록 해주는 인터페이스입니다.
1. 개요 - JDBC는 Sun Microsystems(현재 Oracle)이 개발한 자바 표준 API로, 자바에서 데이터베이스에 독립적인 방법으로 접근할 수 있게 설계됨 - 데이터베이스에 접속, SQL 명령문 실행, 결과 집합(ResultSet) 처리 등 데이터베이스와 상호작용하는 데 필요한 기능 제공 - JDBC 드라이버를 통해 실제 특정 데이터베이스 제품에 연동 가능 (예: MySQL, Oracle, SQL Server, PostgreSQL 등) 2. JDBC의 구성 요소 - 드라이버 매니저(DriverManager): JDBC 드라이버를 관리하고 특정 드라이버와 연결을 담당 - 드라이버(Driver): 데이터베이스와 직접 통신하는 구현체. 데이터베이스 종류별로 제공됨 - 커넥션(Connection): 데이터베이스와의 연결 세션을 나타냄 - 스테이트먼트(Statement): SQL 명령어를 데이터베이스에 전달하고 실행하는 역할 - Statement: 일반적인 SQL 실행 - PreparedStatement: 미리 파라미터가 포함된 SQL을 준비해 보다 효율적이고 안전하게 실행 - CallableStatement: 저장 프로시저 호출용 - 결과 집합(ResultSet): SQL 쿼리 실행 결과를 담고 있음 3. JDBC 동작 방식 1) 드라이버 로드 ```java Class.forName("com.mysql.cj.jdbc.Driver"); ``` 2) 데이터베이스 연결 획득 ```java Connection conn = DriverManager.getConnection(url, user, password); ``` 3) SQL 실행을 위한 Statement 생성 ```java Statement stmt = conn.createStatement(); ``` 또는 PreparedStatement 사용 ```java PreparedStatement pstmt = conn.prepareStatement(sql); ``` 4) SQL 쿼리 실행 및 결과 수집 ```java ResultSet rs = stmt.executeQuery("SELECT * FROM users"); ``` 5) 결과 처리 ```java while(rs.next()) { String name = rs.getString("name"); // 처리 로직 } ``` 6) 리소스 해제 ```java rs.close(); stmt.close(); conn.close(); ``` 4. 특징 - 자바 표준 API 이므로 데이터베이스에 종속적이지 않음 - JDBC 드라이버만 교체하면 다른 데이터베이스도 쉽게 연동 가능 - SQL 작성과 실행을 직접 컨트롤 가능 - PreparedStatement를 통해 SQL Injection 같은 보안 문제 예방 가능 - 트랜잭션 관리, 배치 처리, 저장 프로시저 호출을 지원 5. JDBC 드라이버 타입 - Type 1: JDBC-ODBC Bridge 드라이버 (과거 방식, 권장하지 않음) - Type 2: 네이티브 API 드라이버 (데이터베이스 클라이언트 라이브러리에 의존) - Type 3: 미들웨어 드라이버 (서버 미들웨어를 통해 접속) - Type 4: 순수 자바 드라이버 (데이터베이스 프로토콜 직접 구현, 가장 많이 사용되는 방식) 6. 활용 예시 JDBC는 웹 애플리케이션, 데스크톱 애플리케이션, 서버 사이드 모듈 등에서 데이터베이스 연동을 위해 많이 사용됩니다.
특히 Spring Framework 같은 자바 기반 프레임워크 내에서 DB 접속 계층의 기본적인 API로 사용되며, 개발자가 쉽게 데이터 조작을 구현하도록 도와줍니다.
--- JDBC는 자바에서 데이터베이스에 연결하고 조작할 수 있도록 표준화된 API로, 여러 종류의 데이터베이스와 상호운용 가능한 데이터베이스 프로그래밍을 가능하게 해주는 도구입니다.