Java DriverManager 클래스

DriverManager는 J2SE(Java™ 2 Plaform, Standard Edition) 및 JDK(Java SE Development Kit)의 정적 클래스입니다. DriverManager는 사용할 애플리케이션에 대해 사용 가능한 JDBC(Java Database Connectivity) 드라이버 세트를 관리합니다.

애플리케이션은 필요한 경우 여러 JDBC 드라이버를 동시에 사용할 수 있습니다. 각 애플리케이션은 URL(Uniform Resource Locator)을 사용하여 JDBC 드라이버를 지정합니다. DriverManager에 특정 JDBC 드라이버의 URL을 전달하여, 애플리케이션은 JDBC 연결의 유형이 애플리케이션에 리턴되어야 함을 DriverManager에 알립니다.

변경 시작JDBC 4.0 이전에는, DriverManager가 사용 가능한 JDBC 드라이버를 인식해야 하므로, 연결을 핸드아웃할 수 있습니다. Class.forName 메소드에 대한 호출을 작성하여, 메소드에 전달되는 해당되는 스트링 이름을 기반으로 실행 중인 JVM(Java Virtual Machine)으로 클래스를 로드합니다. 다음은 원시 JDBC 드라이버를 로드하기 위해 사용되는 class.forName 메소드의 예입니다.변경 끝

예: 원시 JDBC 드라이버 로드

변경 시작
// Load the native JDBC driver into the DriverManager to make it
// available for getConnection requests.

Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
변경 끝

변경 시작JDBC 드라이버는 해당 드라이버 구현 클래스가 로딩될 때 자동으로 자체에 대해 DriverManager에 알리도록 설계됩니다. 변경 끝

변경 시작JDBC 4.0에서, JDBC 드라이버는 자동으로 로드되고 Class.forName 호출이 필요하지 않습니다.변경 끝

변경 시작작업에 사용하는 DriverManager에 대해 원시 JDBC 드라이버가 사용 가능하게 되면, 다음 코드 행은 원시 JDBC URL을 사용하는 Connection 오브젝트를 요청합니다. 변경 끝

예: Connection 오브젝트 요청

// Get a connection that uses the native JDBC driver.

Connection c = DriverManager.getConnection("jdbc:db2:*local");

JDBC URL의 가장 간단한 양식은 콜론으로 분리되는 세 개 값의 리스트입니다. 리스트에서 첫 번째 값은 JDBC URL에 대해 항상 jdbc인 프로토콜을 나타냅니다. 두 번째 값은 서브 프로토콜이며 db2 또는 db2iSeries가 원시 JDBC 드라이버 지정에 사용됩니다. 세 번째 값은 특정 시스템과의 연결을 설정하기 위한 시스템명입니다. 로컬 데이터베이스에 연결하기 위해 사용할 수 있는 두 개의 특수 값이 있습니다. *LOCAL과 localhost(둘 다 대소문자가 구분됨)입니다. 특정 시스템명도 다음과 같이 제공할 수 있습니다.

Connection c =
  DriverManager.getConnection("jdbc:db2:rchasmop");

rchasmop 시스템과의 연결을 작성합니다. 연결하려고 하는 시스템이 리모트 시스템인 경우(예를 들어, Distributed Relational Database Architecture™를 통해), 관계형 데이터베이스 디렉토리의 시스템명을 사용해야 합니다.

참고: 지정하지 않은 경우, 사인인하기 위해 현재 사용되는 사용자 ID 및 암호는 데이터베이스와의 연결을 설정하기 위해서도 사용됩니다.
참고: IBM® DB2® JDBC 범용 드라이버는 db2 서브프로토콜도 사용합니다. 원시 JDBC 드라이버가 URL을 처리하도록, 애플리케이션은 jdbc:db2:xxxx URL 대신 jdbc:db2iSeries:xxxx URL을 사용해야 합니다. 애플리케이션은 원시 드라이버가 db2 서브 프로토콜에 대해 URLS를 승인하는 것을 원하지 않는 경우, 애플리케이션은 com.ibm.db2.jdbc.app.DB2Driver 대신 com.ibm.db2.jdbc.app.DB2iSeriesDriver 클래스를 로드해야 합니다. 이 클래스가 로드될 때, 원시 드라이버는 더 이상 db2 서브프로토콜을 포함하는 URL을 처리하지 않습니다.

특성

DriverManager.getConnection 메소드는 이전에 표시된 단일 스트링 URL을 취하며 Connection 오브젝트를 확보하기 위한 DriverManager의 메소드 중 유일한 하나입니다. 사용자 ID 및 암호를 취하는 DriverManager.getConnection 메소드의 다른 버전도 있습니다. 다음은 이 버전의 예입니다.

: 사용자 ID 및 암호를 취하는 DriverManager.getConnection 메소드

// Get a connection that uses the native JDBC driver.

Connection c = DriverManager.getConnection("jdbc:db2:*local", "cujo", "newtiger");

코드 행은 애플리케이션을 실행 중인 사용자에 관계없이 암호가 newtiger인 사용자 cujo로서 로컬 데이터베이스에 연결하려고 합니다. 추가 사용자 정의를 허용하기 위해 java.util.Properties 오브젝트를 취하는 DriverManager.getConnection 메소드의 버전도 있습니다. 다음은 예입니다.

예: java.util.Properties 오브젝트를 취하는 DriverManager.getConnection 메소드

// Get a connection that uses the native JDBC driver.

Properties prop = new java.util.Properties();
prop.put("user", "cujo");
prop.put("password","newtiger");
Connection c = DriverManager.getConnection("jdbc:db2:*local", prop);

코드는 사용자 ID 및 암호를 매개변수로 전달한, 이전에 언급된 버전과 기능적으로 동등합니다.

원시 JDBC 드라이버에 대한 연결 특성의 전체 리스트는 연결 특성을 참조하십시오.

URL 특성

특성을 지정하기 위한 다른 방법은 URL 오브젝트 자체에서 리스트에 특성을 위치시키는 것입니다. 리스트의 각 특성은 세미콜론으로 분리되고, 리스트는 property name=property value 양식이어야 합니다. 이는 단지 손쉬운 방법이며, 다음 예에 표시된 것처럼 처리가 수행되는 방법을 현저하게 변경하지 않습니다.

예: URL 특성 지정

// Get a connection that uses the native JDBC driver.

Connection c = DriverManager.getConnection("jdbc:db2:*local;user=cujo;password=newtiger");

코드는 다시 이전에 언급된 예와 기능상 동등합니다.

특정 오브젝트와 URL 오브젝트 둘 다에서 특성 값이 지정된 경우, URL 버전은 특성 오브젝트의 버전보다 우선합니다. 다음은 예입니다.

예: URL 특성

// Get a connection that uses the native JDBC driver.
Properties prop = new java.util.Properties();
prop.put("user", "someone");
prop.put("password","something");
Connection c = DriverManager.getConnection("jdbc:db2:*local;user=cujo;password=newtiger",
prop);