본문 바로가기
Back-end

JDBC

by 신재권 2023. 8. 24.

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 작성 및 연결 관리를 자동화 하며, 객체 지향적인 개발을 더욱 용이하게 한다.

'Back-end' 카테고리의 다른 글

PSA(Portable Service Abstraction)  (0) 2023.08.30
IoC/DI  (0) 2023.08.30
가상 머신(스택 기반, 레지스터 기반)  (0) 2023.08.24
Object.equals()를 재정의 해야 하는 이유  (0) 2023.08.24
sychronized, Atomic  (0) 2023.08.24