Java와 데이터베이스 (Java and Databases)
Java 애플리케이션에서 데이터베이스를 사용하기 위해 JDBC(Java Database Connectivity)를 사용합니다. JDBC는 Java에서 데이터베이스와의 연결을 가능하게 하고, SQL 쿼리를 실행하고 결과를 처리할 수 있도록 합니다.
JDBC 개요 (Overview of JDBC)
JDBC는 Java 프로그램에서 데이터베이스와 연결하여 데이터를 주고받을 수 있는 API입니다. JDBC는 일반적으로 다음과 같은 단계로 구성됩니다:
- 드라이버 로드: 데이터베이스 제공업체가 제공하는 JDBC 드라이버를 로드합니다.
- 데이터베이스 연결: JDBC 드라이버를 사용하여 데이터베이스에 연결합니다.
- SQL 실행: 연결된 데이터베이스에서 SQL 쿼리를 실행하여 데이터를 조회, 추가, 수정, 삭제합니다.
- 결과 처리: SQL 쿼리의 실행 결과를 받아와서 처리합니다.
- 연결 종료: 데이터베이스와의 연결을 닫습니다.
데이터베이스 연결 (Connecting to a Database)
Java에서 데이터베이스에 연결하려면 JDBC 드라이버를 사용하여 Connection 객체를 생성해야 합니다. 이를 위해 데이터베이스 제공업체가 제공하는 JDBC 드라이버 JAR 파일을 프로젝트에 포함해야 합니다.
MySQL 데이터베이스 연결 예제:
import java.sql.*; public class DBConnectionExample { public static void main(String[] args) { // JDBC 드라이버 클래스를 로드합니다. try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("MySQL JDBC 드라이버를 찾을 수 없습니다."); e.printStackTrace(); return; } // 데이터베이스 연결 정보 설정 String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "username"; String password = "password"; try { // 데이터베이스에 연결합니다. Connection conn = DriverManager.getConnection(url, username, password); // 연결이 성공하면 쿼리를 실행하고 결과를 처리합니다. Statement stmt = conn.createStatement(); String sql = "SELECT * FROM employees"; ResultSet rs = stmt.executeQuery(sql); // 결과 처리 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); double salary = rs.getDouble("salary"); System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary); } // 자원을 해제합니다. rs.close(); stmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
위의 예제에서는 MySQL 데이터베이스에 연결하여 employees
테이블에서 데이터를 조회하는 방법을 보여줍니다. Class.forName()
메서드로 JDBC 드라이버를 로드하고, DriverManager.getConnection()
메서드로 데이터베이스에 연결합니다.
SQL 실행 (Executing SQL)
Java에서는 Statement
, PreparedStatement
, CallableStatement
등을 사용하여 SQL 쿼리를 실행할 수 있습니다.
PreparedStatement 예제:
import java.sql.*; public class PreparedStatementExample { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String username = "username"; String password = "password"; String query = "INSERT INTO employees (name, salary) VALUES (?, ?)"; try (Connection conn = DriverManager.getConnection(url, username, password); PreparedStatement pstmt = conn.prepareStatement(query)) { pstmt.setString(1, "John Doe"); pstmt.setDouble(2, 50000.0); int rowsInserted = pstmt.executeUpdate(); if (rowsInserted > 0) { System.out.println("새로운 레코드가 추가되었습니다."); } } catch (SQLException e) { e.printStackTrace(); } } }
위의 예제에서는 PreparedStatement
를 사용하여 employees
테이블에 새로운 레코드를 추가하는 방법을 보여줍니다. setString()
및 setDouble()
메서드를 사용하여 SQL 쿼리의 매개변수를 설정하고, executeUpdate()
메서드로 쿼리를 실행합니다.