Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

JDBC 드라이버 등록 방법 2가지 – Class.forName() vs registerDriver() 완벽 정리

JDBC를 사용해 데이터베이스에 연결하려면 먼저 해당 데이터베이스에 맞는 드라이버를 준비한 뒤, 이를 JDBC 드라이버 매니저에 등록해야 합니다. Java에서 데이터베이스 드라이버를 등록하는 방법은 크게 두 가지가 있습니다.

1. Class.forName() 메서드를 사용하는 방법

Class 클래스의 forName() 메서드는 클래스 이름을 문자열(String) 매개변수로 받아 해당 클래스를 메모리에 로드합니다. 클래스가 메모리에 로드되는 순간 JDBC 드라이버로 자동 등록되므로, 별도의 등록 절차 없이 간편하게 사용할 수 있습니다.

Class.forName("com.mysql.jdbc.Driver");

예제 코드

다음은 MySQL 데이터베이스에 연결하는 JDBC 프로그램입니다. 이 예제에서는 forName() 메서드를 사용해 MySQL 드라이버를 등록합니다.

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

public class RegisterDriverExample {
    public static void main(String args[]) throws SQLException {
        // 드라이버 등록
        Class.forName("com.mysql.jdbc.Driver");
        
        // 연결 가져오기
        String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established: " + con);
    }
}

실행 결과

Connection established: com.mysql.jdbc.JDBC4Connection@4fccd51b

2. registerDriver() 메서드를 사용하는 방법

DriverManager 클래스의 registerDriver() 메서드는 드라이버 클래스의 객체를 매개변수로 받아 JDBC 드라이버 매니저에 직접 등록합니다. 이 방식은 드라이버 객체를 명시적으로 생성하고 등록하기 때문에 코드의 의도가 더 분명하게 드러납니다.

Driver myDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(myDriver);

예제 코드

다음은 MySQL 데이터베이스에 연결하는 JDBC 프로그램입니다. 이 예제에서는 registerDriver() 메서드를 사용해 MySQL 드라이버를 등록합니다.

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

public class RegisterDriverExample {
    public static void main(String args[]) throws SQLException {
        // 드라이버 등록
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        
        // 연결 가져오기
        String mysqlUrl = "jdbc:mysql://localhost/mydatabase";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established: " + con);
    }
}

실행 결과

Connection established: com.mysql.jdbc.JDBC4Connection@4fccd51b

두 방식의 차이점 정리

  • Class.forName(): 문자열로 지정한 드라이버 클래스를 동적으로 로드하며, 로드 시 자동으로 등록됩니다. 설정 파일이나 외부 입력값을 통해 드라이버를 유연하게 변경할 수 있다는 장점이 있습니다.
  • registerDriver(): 드라이버 객체를 직접 생성해 등록합니다. 컴파일 시점에 드라이버 클래스가 확정되며, 등록 과정이 코드에 명시적으로 표현됩니다.

JDBC 4.0(Java 6)부터는 서비스 프로바이더 메커니즘(SPI)에 의해 클래스패스에 있는 드라이버가 자동으로 등록되므로, 최신 환경에서는 위 두 방식 모두 생략 가능하다는 점도 참고하면 좋습니다.