ラッパーとインターフェイス

Microsoft SQL Server JDBC Driver は、クラスのプロキシを作成できるインターフェイスと、SQL Server JDBC Driver に固有の JDBC API 拡張機能に対し、プロキシ インターフェイス経由でアクセスするためのラッパーをサポートします。

ラッパー

SQL Server JDBC Driver は、java.sql.Wrapper インターフェイスをサポートします。 このインターフェイスには、SQL Server JDBC Driver に固有の JDBC API 拡張機能に対し、プロキシ インターフェイス経由でアクセスするためのメカニズムが備わっています。

java.sql.Wrapper インターフェイスには、isWrapperForunwrap の 2 つのメソッドが定義されています。 isWrapperFor は、指定された入力オブジェクトに、このインターフェイスが実装されているかどうかをチェックするメソッドです。 unwrap メソッドは、このインターフェイスを実装するオブジェクトを返します。このメソッドから返されたオブジェクトを使用することで、SQL Server JDBC Driver 固有のメソッドにアクセスできます。

isWrapperFor メソッドと unwrap メソッドは次のように公開されます。

インターフェイス

SQL Server JDBC Driver 3.0 以降では、関連付けられたクラスからドライバー固有のメソッドにアクセスするアプリケーション サーバーでインターフェイスを使用できます。 アプリケーション サーバーは、プロキシを作成し、インターフェイスから SQL Server JDBC ドライバー固有の機能を公開することで、クラスをラップできます。 SQL Server JDBC ドライバーは、アプリケーション サーバーがクラスのプロキシを作成できるように、SQL Server JDBC ドライバー固有のメソッドと定数を持つインターフェイスをサポートします。

インターフェイスは標準の Java インターフェイスから派生するため、オブジェクトをアンラップしてドライバー固有の機能または汎用 SQL Server JDBC ドライバー機能にアクセスした後で、同じオブジェクトを使用できます。

次のインターフェイスが追加されています。

説明

このサンプルは、DataSource オブジェクトから SQL Server JDBC Driver 固有の関数にアクセスする方法を示しています。 この 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);
      }
   }
}

参照

その他のリソース

JDBC Driver のデータ型について