자바(Java)에서 데이터베이스에 연결하고, SQL 쿼리를 실행하여 데이터를 처리할 수 있도록 지원하는 표준 API입니다. JDBC는 자바 애플리케이션과 다양한 데이터베이스 시스템(예: MySQL, Oracle, PostgreSQL 등) 간의 상호 작용을 가능하게 해주는 중간 다리 역할을 합니다.
JDBC는 자바 애플리케이션과 데이터베이스를 연결하기 위한 기능을 제공합니다. 이 연결은 JDBC 드라이버를 통해 이루어지며, JDBC는 데이터베이스 종류에 관계없이 표준화된 방식으로 이 작업을 수행할 수 있습니다.
JDBC를 통해 SQL 명령(SELECT, INSERT, UPDATE, DELETE)을 데이터베이스에 전달하고, 그 결과를 받아올 수 있습니다. 즉, 데이터베이스에 명령을 내리고 데이터를 처리하는 것이 가능합니다.
SQL 쿼리의 결과는 JDBC를 통해 자바 애플리케이션으로 전달됩니다. JDBC는 이를 ResultSet 객체로 제공하며, 이를 통해 데이터베이스에서 반환된 결과를 처리할 수 있습니다.
JDBC는 트랜잭션을 관리할 수 있는 기능을 제공합니다. 이를 통해 여러 SQL 작업을 하나의 트랜잭션으로 묶어, 작업이 모두 성공하면 커밋하고, 실패하면 롤백할 수 있습니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBCExample {
public static void main(String[] args) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
// 1. JDBC 드라이버 로드 (드라이버는 데이터베이스에 따라 다름)
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 데이터베이스 연결 설정
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "username";
String password = "password";
// 3. 데이터베이스 연결
connection = DriverManager.getConnection(url, user, password);
// 4. SQL 쿼리 실행
statement = connection.createStatement();
String sql = "SELECT * FROM users";
resultSet = statement.executeQuery(sql);
// 5. 결과 처리
while (resultSet.next()) {
System.out.println("ID: " + resultSet.getInt("id"));
System.out.println("Name: " + resultSet.getString("name"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6. 자원 해제
try {
if (resultSet != null) resultSet.close();
if (statement != null) statement.close();
if (connection != null) connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
JDBC는 데이터베이스와 직접 통신하지 않고, JDBC 드라이버를 통해 통신합니다. JDBC 드라이버는 특정 데이터베이스에 맞는 라이브러리로, JDBC가 데이터베이스에 접근할 수 있도록 해줍니다. 각 데이터베이스는 JDBC 표준에 맞는 드라이버를 제공해야 하며, 드라이버를 통해 SQL 명령이 데이터베이스로 전달됩니다.
DriverManager 클래스를 사용해 데이터베이스에 연결합니다. 연결을 설정할 때 데이터베이스 URL, 사용자 이름, 비밀번호와 같은 정보를 제공해야 합니다.
연결이 성공하면 Statement 또는 PreparedStatement 객체를 사용해 SQL 명령을 실행할 수 있습니다. 이 객체를 통해 데이터베이스와 상호작용하며, SELECT 쿼리로 데이터를 조회하거나 INSERT, UPDATE, DELETE와 같은 작업을 수행할 수 있습니다.
SELECT 쿼리의 결과는 ResultSet 객체로 반환됩니다. 이를 통해 반환된 데이터를 한 행씩 순차적으로 읽거나 처리할 수 있습니다.
모든 작업이 끝난 후에는 반드시 데이터베이스 연결을 종료해야 합니다. 이는 리소스를 낭비하지 않기 위한 중요한 작업입니다.
JDBC 드라이버를 관리하고 데이터베이스에 연결하는 역할을 합니다. getConnection() 메서드를 사용하여 데이터베이스 연결을 설정합니다.
데이터베이스와의 연결을 나타냅니다. SQL 명령을 실행하기 위해 Statement나 PreparedStatement를 생성하는 역할을 합니다. 트랜잭션 관리도 이 객체를 통해 이루어집니다.
SQL 쿼리를 실행하기 위한 객체입니다. 주로 간단한 SQL 문을 실행할 때 사용됩니다.
Statement의 하위 클래스이며, 파라미터화된 SQL 쿼리를 실행할 수 있습니다. 이를 통해 SQL 인젝션을 방지할 수 있으며, 복잡한 쿼리 처리에 적합합니다.
SELECT 쿼리의 결과를 저장하고, 그 결과를 탐색할 수 있도록 도와줍니다. next() 메서드를 통해 한 행씩 결과를 읽어올 수 있습니다.
JDBC는 자바 표준 API이므로, 한 번 JDBC 코드를 작성하면 데이터베이스에 따라 코드 수정을 최소화할 수 있습니다. 데이터베이스 변경 시에는 드라이버만 바꾸면 대부분의 코드가 재사용 가능합니다.
JDBC는 데이터베이스 연결과 쿼리 실행을 위한 표준화된 방법을 제공하므로, 개발자가 특정 데이터베이스에 맞춰 코드를 작성할 필요가 없습니다.
데이터베이스 작업을 수행할 때마다 연결, 쿼리 실행, 자원 해제 등의 과정을 직접 처리해야 하므로 코드가 길고 복잡해질 수 있습니다.
JDBC에서는 SQL 쿼리를 직접 작성해야 하기 때문에, 데이터베이스 구조가 변경되면 쿼리도 수정해야 하는 문제가 발생할 수 있습니다.
데이터베이스 작업에 필요한 많은 반복적인 코드(연결 설정, 자원 해제 등)가 발생합니다. 이를 보완하기 위해 ORM 프레임워크(예: Hibernate, JPA)가 많이 사용됩니다.
JDBC는 데이터베이스와 자바 애플리케이션 간의 표준적인 데이터 통신 방법을 제공하며, SQL을 직접 사용해야 하는 만큼 유연성과 통제력을 제공합니다. 하지만 더 나은 생산성을 위해 ORM 프레임워크와 함께 사용되는 경우가 많습니다.