[java] 데이터베이스에 연결하는 동안 Class.forName ( “oracle.jdbc.driver.OracleDriver”)의 실제 사용은 무엇입니까?

명령은 무엇입니까

Class.forName("oracle.jdbc.driver.OracleDriver")

Oracle 데이터베이스에 연결하는 동안 정확히 수행합니까? 같은 일을하는 다른 방법이 있습니까?



답변

FQCN (정규화 된 클래스 이름)을 사용하여 클래스 개체에 대한 참조를 가져옵니다 oracle.jdbc.driver.OracleDriver.

지정된 클래스가 현재 클래스 로더에 의해로드되는지 확인하는 것 외에는 데이터베이스에 연결하는 것과 관련하여 아무 것도 “실행”하지 않습니다 . 글쓰기에는 근본적인 차이가 없습니다.

Class<?> driverClass = Class.forName("oracle.jdbc.driver.OracleDriver");
// and
Class<?> stringClass = Class.forName("java.lang.String");

Class.forName("com.example.some.jdbc.driver")호출에 표시 레거시 때문에 JDBC를 사용하는 코드 즉이다 기존의 JDBC 드라이버를로드하는 방법 .

에서 자바 튜토리얼 :

이전 버전의 JDBC에서 연결을 얻으려면 먼저 메소드를 호출하여 JDBC 드라이버를 초기화해야했습니다 Class.forName. 이 메서드에는 유형의 개체가 필요합니다 java.sql.Driver. 각 JDBC 드라이버에는 인터페이스를 구현하는 하나 이상의 클래스가 포함되어 있습니다 java.sql.Driver.

클래스 경로에있는 모든 JDBC 4.0 드라이버가 자동으로로드됩니다. (그러나 JDBC 4.0 이전의 모든 드라이버는 메소드를 사용하여 수동으로로드해야합니다 Class.forName.)

추가 읽기 (읽기 : 질문이 중복 됨)


답변

드라이버를 등록합니다. 다음과 같은 형식의 것 :

public class SomeDriver implements Driver {
  static {
    try {
      DriverManager.registerDriver(new SomeDriver());
    } catch (SQLException e) {
      // TODO Auto-generated catch block
    }
  }

  //etc: implemented methods
}


답변

로부터 자바 JDBC 튜토리얼 :

이전 버전의 JDBC에서 연결을 얻으려면 먼저 메소드를 호출하여 JDBC 드라이버를 초기화해야했습니다 Class.forName. 클래스 경로에있는 모든 JDBC 4.0 드라이버가 자동으로로드됩니다. (그러나 JDBC 4.0 이전의 모든 드라이버는 메소드를 사용하여 수동으로로드해야합니다 Class.forName.)

따라서 Java 1.6과 함께 Oracle 11g (11.1) 드라이버를 사용하는 경우을 호출 할 필요가 없습니다 Class.forName. 그렇지 않으면 드라이버를 초기화하기 위해 호출해야합니다.


답변

Java 6 이전에는 DriverManager클래스가 사용하려는 JDBC 드라이버를 알지 못했습니다. Class.forName("...")드라이버 클래스를 미리로드하는 방법이었습니다.

Java 6을 사용하는 경우 더 이상이 작업을 수행 할 필요가 없습니다.


답변

이 명령은 DriverManager 인스턴스에 사용할 수 있도록 Oracle jdbc 드라이버의 클래스를로드합니다. 클래스가로드 된 후 시스템을 사용하여 Oracle에 연결할 수 있습니다. 대안으로 DriverManager의 registerDriver 메소드를 사용하고 필요한 JDBC 드라이버의 인스턴스와 함께 전달할 수 있습니다.


답변

대안은 jdbc.drivers 시스템 속성 을 사용하여 JVM을 시작할 때 명령 줄에서 필요한 드라이버를 지정하는 것입니다.


답변

oracle.jdbc.driver.OracleDriver가 아닌 oracle.jdbc.OracleDriver를 사용하십시오. Tomcat을 사용하는 경우 드라이버 jar 파일이 “WEB-INF \ lib”디렉토리에있는 경우 등록 할 필요가 없습니다. 이것을 test.jsp로 저장하고 웹 디렉토리에 넣고 Tomcat 관리자에서 웹 앱 폴더를 다시 배포합니다.

<%@ page import="java.sql.*" %>

<HTML>
<HEAD>
<TITLE>Simple JSP Oracle Test</TITLE>
</HEAD><BODY>
<%
Connection conn = null;
try {
    Class.forName("oracle.jdbc.OracleDriver");
    conn = DriverManager.getConnection("jdbc:oracle:thin:@XXX.XXX.XXX.XXX:XXXX:dbName", "user", "password");
    Statement stmt = conn.createStatement();
    out.println("Connection established!");
}
catch (Exception ex)
{
    out.println("Exception: " + ex.getMessage() + "");

}
finally
{
    if (conn != null) {
        try {
            conn.close();
        }
        catch (Exception ignored) {
            // ignore
        }
    }
}

%>