래퍼 및 인터페이스
Microsoft JDBC Driver for SQL Server에서는 클래스의 프록시를 만들 수 있는 인터페이스를 지원하며, 프록시 인터페이스를 통해 Microsoft JDBC Driver for SQL Server와 관련된 JDBC API 확장에 액세스할 수 있는 래퍼를 지원합니다.
래퍼
Microsoft JDBC Driver for SQL Server는 java.sql.Wrapper 인터페이스를 지원합니다. 이 인터페이스는 프록시 인터페이스를 통해 Microsoft JDBC Driver for SQL Server와 관련된 JDBC API에 대한 확장에 액세스할 수 있는 메커니즘을 제공합니다.
java.sql.Wrapper 인터페이스는 isWrapperFor 및 unwrap이라는 두 가지 메서드를 정의합니다. isWrapperFor 메서드는 지정된 입력 개체가 이 인터페이스를 구현하는지 여부를 검사합니다. unwrap 메서드는 Microsoft JDBC Driver for SQL Server에 특정한 메서드에 액세스할 수 있도록 허용하기 위해 이 인터페이스를 구현하는 개체를 반환합니다.
isWrapperFor 및 unwrap 메서드는 다음과 같이 노출됩니다.
- isWrapperFor 메서드(SQLServerCallableStatement)
- unwrap 메서드(SQLServerCallableStatement)
- isWrapperFor 메서드(SQLServerConnectionPoolDataSource)
- unwrap 메서드(SQLServerConnectionPoolDataSource)
- isWrapperFor 메서드(SQLServerDataSource)
- unwrap 메서드(SQLServerDataSource)
- isWrapperFor 메서드(SQLServerPreparedStatement)
- unwrap 메서드(SQLServerPreparedStatement)
- isWrapperFor 메서드(SQLServerStatement)
- unwrap 메서드(SQLServerStatement)
- isWrapperFor 메서드(SQLServerXADataSource)
- unwrap 메서드(SQLServerXADataSource)
인터페이스
SQL Server JDBC Driver 3.0부터 응용 프로그램 서버가 연결된 클래스에서 드라이버별 메서드에 액세스할 수 있는 인터페이스를 사용할 수 있습니다. 응용 프로그램 서버는 프록시를 만들어 클래스를 래핑할 수 있고, 인터페이스에서 Microsoft JDBC Driver for SQL Server 관련 기능을 노출합니다. Microsoft JDBC Driver for SQL Server는 응용 프로그램 서버가 클래스의 프록시를 만들 수 있도록 Microsoft JDBC Driver for SQL Server 관련 메서드와 상수가 있는 인터페이스를 지원합니다.
인터페이스는 표준 Java 인터페이스에서 파생되므로 드라이버 관련 기능이나 제네릭 Microsoft JDBC Driver for SQL Server 기능에 액세스하기 위해 래핑 해제되면 동일한 개체를 사용할 수 있습니다.
다음 인터페이스가 추가됩니다.
- ISQLServerCallableStatement
- ISQLServerConnection
- ISQLServerDataSource
- ISQLServerPreparedStatement
- ISQLServerResultSet
- ISQLServerStatement
예제
설명
이 샘플에서는 DataSource 개체에서 Microsoft JDBC Driver for SQL Server 관련 함수에 액세스하는 방법을 보여 줍니다. 이 DataSource 클래스는 응용 프로그램 서버로 래핑되었을 수 있습니다. JDBC 드라이버 관련 함수 또는 상수에 액세스하려면 데이터 원본을 ISQLServerDataSource 인터페이스로 래핑 해제하고, 이 인터페이스에 선언된 함수를 사용할 수 있습니다.
코드
import javax.sql.*;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
public class UnWrapTest {
public static void main(String[] args) {
// This is a test. This DataSource object could be something from an appserver
// which has wrapped the real SQLServerDataSource with its own wrapper
SQLServerDataSource ds = new SQLServerDataSource();
checkSendStringParametersAsUnicode(ds);
}
// Unwrap to the ISQLServerDataSource interface to access the getSendStringParametersAsUnicode function
static void checkSendStringParametersAsUnicode(DataSource ds) {
try {
final ISQLServerDataSource sqlServerDataSource = ds.unwrap(ISQLServerDataSource.class);
boolean sendStringParametersAsUnicode = sqlServerDataSource.getSendStringParametersAsUnicode();
System.out.println("Send string as parameter value is:-" + sendStringParametersAsUnicode);
} catch (SQLException sqlE) {
System.out.println("Exception:-" + sqlE);
}
}
}