반응형
JDBC: 개념과 활용
JDBC(Java Database Connectivity)는 자바에서 데이터베이스와 상호작용하기 위한 표준 API입니다. 이를 통해 애플리케이션에서 데이터베이스에 연결하고, 데이터를 조회하거나 수정할 수 있습니다. 이 글에서는 JDBC의 개념, 자바에서 사용하는 방법, 그리고 간단한 예제를 통해 JDBC 활용 방법을 알아보겠습니다.
JDBC란 무엇인가?
**JDBC(Java Database Connectivity)**는 자바 프로그램과 데이터베이스 간의 연결을 제공하는 API입니다. SQL 쿼리를 실행하고 데이터베이스로부터 데이터를 가져오거나 업데이트하는 작업을 수행할 수 있습니다.
JDBC의 특징:
- 플랫폼 독립성: 자바의 플랫폼 독립성처럼, JDBC는 다양한 데이터베이스와 호환됩니다.
- SQL 지원: 표준 SQL 문법을 사용하여 데이터베이스 작업 수행.
- 유연성: 다양한 데이터베이스 드라이버를 통해 연결 가능.
JDBC 구성 요소:
- DriverManager: 데이터베이스 드라이버를 관리.
- Connection: 데이터베이스 연결을 표현.
- Statement: SQL 문을 실행.
- ResultSet: SQL 쿼리 결과를 처리.
자바에서 JDBC 사용 방법
JDBC를 사용하여 데이터베이스와 상호작용하는 기본 흐름은 다음과 같습니다:
- 데이터베이스 드라이버 로드.
- 데이터베이스에 연결.
- SQL 문 실행.
- 결과 처리.
- 연결 종료.
예제: MySQL 데이터베이스 연결 및 데이터 조회
import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/exampledb"; // 데이터베이스 URL
String username = "root"; // 사용자 이름
String password = "password"; // 비밀번호
String query = "SELECT * FROM users";
try {
// 1. 드라이버 로드
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 데이터베이스 연결
Connection connection = DriverManager.getConnection(url, username, password);
// 3. SQL 문 실행
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query);
// 4. 결과 처리
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
String email = resultSet.getString("email");
System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
}
// 5. 연결 종료
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
출력 결과 (예시):
ID: 1, Name: Alice, Email: alice@example.com
ID: 2, Name: Bob, Email: bob@example.com
PreparedStatement 사용
PreparedStatement
는 SQL 문을 미리 컴파일하여 성능을 최적화하고, SQL 인젝션 공격을 방지합니다.
예제: PreparedStatement로 데이터 삽입
String insertQuery = "INSERT INTO users (name, email) VALUES (?, ?)";
try (Connection connection = DriverManager.getConnection(url, username, password);
PreparedStatement preparedStatement = connection.prepareStatement(insertQuery)) {
preparedStatement.setString(1, "Charlie");
preparedStatement.setString(2, "charlie@example.com");
int rowsInserted = preparedStatement.executeUpdate();
System.out.println(rowsInserted + " row(s) inserted.");
} catch (SQLException e) {
e.printStackTrace();
}
출력 결과:
1 row(s) inserted.
트랜잭션 처리
JDBC는 트랜잭션 관리도 지원합니다. 여러 작업을 하나의 트랜잭션으로 묶어 처리할 수 있습니다.
예제: 트랜잭션 관리
try (Connection connection = DriverManager.getConnection(url, username, password)) {
connection.setAutoCommit(false); // 자동 커밋 비활성화
try (PreparedStatement stmt1 = connection.prepareStatement("UPDATE accounts SET balance = balance - ? WHERE id = ?");
PreparedStatement stmt2 = connection.prepareStatement("UPDATE accounts SET balance = balance + ? WHERE id = ?")) {
stmt1.setInt(1, 100);
stmt1.setInt(2, 1);
stmt1.executeUpdate();
stmt2.setInt(1, 100);
stmt2.setInt(2, 2);
stmt2.executeUpdate();
connection.commit(); // 트랜잭션 커밋
System.out.println("Transaction committed successfully.");
} catch (SQLException e) {
connection.rollback(); // 트랜잭션 롤백
System.out.println("Transaction rolled back due to error.");
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
출력 결과 (성공 시):
Transaction committed successfully.
다양한 활용 예시
- 사용자 인증 시스템:
- JDBC를 사용해 사용자 정보를 데이터베이스에서 검증.
- 데이터 분석:
- 데이터베이스에서 대량의 데이터를 쿼리하여 분석.
- 로그 시스템:
- 애플리케이션 로그를 데이터베이스에 저장.
- 보고서 생성:
- 데이터베이스 데이터를 기반으로 보고서 생성.
마치며
JDBC는 데이터베이스와 상호작용하기 위한 강력하고 유연한 도구입니다. 데이터베이스 연결, 쿼리 실행, 트랜잭션 관리 등을 통해 강력한 데이터 중심 애플리케이션을 개발할 수 있습니다. 적절한 활용을 통해 데이터베이스 작업을 효율적으로 처리해 보세요!
반응형
'개발 부트캠프 > 백엔드' 카테고리의 다른 글
[Java] MVC 패턴 (1) | 2025.01.07 |
---|---|
[Java] SOLID 원칙 (0) | 2025.01.07 |
[Java] 쓰레드(Thread) (0) | 2025.01.06 |
[Java] Collection(List / Set / Map) (0) | 2025.01.06 |
[Java] 의존성 역전 원칙(DIP) (0) | 2025.01.04 |