명령은 무엇입니까
Class.forName("oracle.jdbc.driver.OracleDriver")
Oracle 데이터베이스에 연결하는 동안 정확히 수행합니까? 같은 일을하는 다른 방법이 있습니까?
명령은 무엇입니까
Class.forName("oracle.jdbc.driver.OracleDriver")
Oracle 데이터베이스에 연결하는 동안 정확히 수행합니까? 같은 일을하는 다른 방법이 있습니까?
A
호출하는 별도의 클래스에 연결 세부 정보가 있고 연결이 필요한 각 서블릿에 대한 연결 필드를 얻기 위해 객체를 생성 한다고 가정 하면 Java가 건너 뛰 거나 다시로드됩니까? Class.forName("oracle.jdbc.driver.OracleDriver")
A
A's
Class.forName("oracle.jdbc.driver.OracleDriver")
답변:
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
.)
Class.forName()
에서는 반환 된 driverClass에 대한 참조를 캡처하지 않고 호출 할 수 있으므로 언뜻보기에는 작동하지 않는 작업처럼 보입니다
Class.forName("etc.driver")
합니까?
Class.forName(...)
.
로부터 자바 JDBC 튜토리얼 :
이전 버전의 JDBC에서 연결을 얻으려면 먼저 메소드를 호출하여 JDBC 드라이버를 초기화해야했습니다
Class.forName
. 클래스 경로에있는 모든 JDBC 4.0 드라이버가 자동으로로드됩니다. (그러나 JDBC 4.0 이전의 모든 드라이버는 메소드를 사용하여 수동으로로드해야합니다Class.forName
.)
따라서 Java 1.6과 함께 Oracle 11g (11.1) 드라이버를 사용하는 경우을 호출 할 필요가 없습니다 Class.forName
. 그렇지 않으면 드라이버를 초기화하기 위해 호출해야합니다.
Class.forName
호출은 클래스 로더가 주어진 클래스를로드하도록합니다. 이것은 튜토리얼에 설명 된 수동 로딩 단계입니다.
class.forName();
:)
Java 6 이전에는 DriverManager
클래스가 사용하려는 JDBC 드라이버를 알지 못했습니다. Class.forName("...")
드라이버 클래스를 미리로드하는 방법이었습니다.
Java 6을 사용하는 경우 더 이상이 작업을 수행 할 필요가 없습니다.
대안은 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
}
}
}
%>