[SQL] JDBC 기본구조

Estar·2024년 7월 16일
0

TIL

목록 보기
9/17
post-thumbnail

JDBC란

JDBC(Java DataBase Connectivity)는 자바에서 표준화된 방법으로 데이터베이스에 접근할 수 있도록 하는 프로그래밍 API
JDBC가 있다면 Oracle, MySQL, H2 상관없이 사용 가능하게 만드는 것이지만 사실 DB 별로 씨퀄이 달라 생각보다 호환이 잘 안된다.

(이론적으로 따지면 DB 종류가 달라고 코드 변경없이 모든 DB를 바꿔가면서, 드라이버만 교체하면 되지만, 내부적으로 DB를 핸들링하는 것은 씨퀄이기 때문에 문법이 다르면 쓸 수 없다는 문제점이 생긴다)

주요 구성 요소

  • DriverManager: 데이터베이스 드라이버를 로드하고 데이터베이스 연결을 관리합니다.
  • Connection: 특정 데이터베이스와의 연결을 나타냅니다.
  • Statement: SQL 쿼리를 실행하기 위한 객체입니다.
  • ResultSet: 쿼리 결과를 저장하고 처리하는 데 사용됩니다.
  • PreparedStatement: SQL 쿼리를 미리 컴파일하여 효율성을 높이고, 파라미터를 통해 동적 쿼리를 실행할 수 있습니다.

장점

  • 저수준 API로 세밀한 데이터베이스 조작 가능
  • 거의 모든 데이터베이스에 대해 동일한 방식으로 접근 가능

단점

  • SQL 쿼리를 직접 작성해야 하므로 코드가 복잡해질 수 있음
  • 데이터베이스별로 다른 SQL 문법을 처리하기 위해 많은 작업이 필요
  • 코드 유지보수가 어려울 수 있음

구현

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

        String query = "SELECT * FROM mytable WHERE id = ?";

        try (Connection connection = DriverManager.getConnection(url, username, password);
             PreparedStatement statement = connection.prepareStatement(query)) {

            statement.setInt(1, 1);
            ResultSet resultSet = statement.executeQuery();

            while (resultSet.next()) {
                System.out.println("ID: " + resultSet.getInt("id"));
                System.out.println("Name: " + resultSet.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

JDBC와 JPA의 주요 차이점

profile
개발자를 꿈꿔요

0개의 댓글

관련 채용 정보