명령은 무엇입니까
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
}
}
}
%>