Wrappers e interfaces

Baixar o JDBC Driver

O Microsoft JDBC Driver para SQL Server é compatível com interfaces que permitem criar um proxy de uma classe, além de wrappers que permitem acessar extensões para a API do JDBC específicas do Microsoft JDBC Driver para SQL Server por meio de uma interface de proxy.

Wrappers

O Microsoft JDBC Driver para SQL Server dá suporte à interface java.sql.Wrapper. Essa interface fornece um mecanismo para acessar extensões para a API do JDBC que são específicas do Microsoft JDBC Driver para SQL Server por meio de uma interface de proxy.

A interface java.sql.Wrapper define dois métodos: isWrapperFor e unwrap. O método isWrapperFor verifica se o objeto de entrada especificado implementa essa interface. O método unwrap retorna um objeto que implementa essa interface para permitir o acesso aos métodos específicos do Microsoft JDBC Driver para SQL Server.

os métodos isWrapperFor e Unwrap são expostos da seguinte maneira:

Interfaces

Começando com o SQL Server JDBC Driver 3.0, as interfaces são disponibilizadas para um servidor de aplicativos para acessar um método específico de driver usando a classe associada. O servidor de aplicativos pode encapsular a classe criando um proxy, expondo a funcionalidade específica do Microsoft JDBC Driver para SQL Server de uma interface. O Microsoft JDBC Driver para SQL Server é compatível com interfaces que têm os métodos específicos e constantes do Microsoft JDBC Driver para SQL Server para que um servidor de aplicativos possa criar um proxy da classe.

Como as interfaces derivam daquelas do Java padrão, você pode usar o mesmo objeto após o desencapsulamento para acessar a funcionalidade específica do driver ou a funcionalidade genérica do Microsoft JDBC Driver para SQL Server.

As seguintes interfaces são adicionadas:

Exemplo

Descrição

Esse exemplo demonstra como acessar uma função específica do Microsoft JDBC Driver para SQL Server usando um objeto DataSource. Essa classe DataSource pode ter sido encapsulada por um servidor de aplicativos. Para acessar a função específica ou a constante do JDBC Driver, é possível desencapsular a fonte de dados em uma interface ISQLServerDataSource e usar as funções declaradas na interface.

Código

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);
      }
   }
}

Confira também

Noções básicas sobre os tipos de dados do JDBC Driver