Back-end

JDBC

신재권 2023. 8. 24. 02:05

JDBC란?

JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속하고 관리하기 위한 API이다.

JDBC를 사용하면 다양한 데이터베이스 시스템에 대해 일관된 방식으로 데이터베이스에 접속하고 데이터의 CRUD 작업을 수행할 수 있습니다.

자바 CRUD 예제

import java.sql.*;

public class JDBCCrudExample {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydb";
        String username = "username";
        String password = "password";

        try {
            // 1. 데이터베이스에 연결
            Connection connection = DriverManager.getConnection(url, username, password);

            // 2. Statement 생성
            Statement statement = connection.createStatement();

            // 3. 데이터 삽입 (Create)
            String insertQuery = "INSERT INTO employees (id, name, age) VALUES (1, 'John', 30)";
            statement.executeUpdate(insertQuery);

            // 4. 데이터 조회 (Read)
            String selectQuery = "SELECT * FROM employees";
            ResultSet resultSet = statement.executeQuery(selectQuery);
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                int age = resultSet.getInt("age");
                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }

            // 5. 데이터 갱신 (Update)
            String updateQuery = "UPDATE employees SET age = 31 WHERE id = 1";
            statement.executeUpdate(updateQuery);

            // 6. 데이터 삭제 (Delete)
            String deleteQuery = "DELETE FROM employees WHERE id = 1";
            statement.executeUpdate(deleteQuery);

            // 연결 및 리소스 해제
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

왜 많이 사용안할까?

  • 복잡성 : JDBC를 사용하면 데이터베이스와의 연결 및 쿼리 작성 등의 작업을 직접 관리해야 한다.
  • 보안 및 오류 처리 : JDBC는 SQL 쿼리를 문자열 형태로 다루기 때문에 보안 문제나 SQL 인젝션과 같은 오류 처리에 주의해야 한다.
  • 생산성 및 유지보수 : ORM 라이브러리를 사용하면 더 높은 생산성과 높은 유지보수성을 얻을 수 있다. SQL 작성 및 연결 관리를 자동화 하며, 객체 지향적인 개발을 더욱 용이하게 한다.