JDBC - Tipos de driver
O que é o driver JDBC?
Os drivers JDBC implementam as interfaces definidas na API JDBC, para interagir com seu servidor de banco de dados.
Por exemplo, o uso de drivers JDBC permite abrir conexões de banco de dados e interagir com ele, enviando comandos SQL ou de banco de dados e, em seguida, recebendo resultados com Java.
O pacote Java.sql fornecido com o JDK contém várias classes com seus comportamentos definidos e suas implementações reais são feitas em drivers de terceiros. Fornecedores terceirizados implementam a interface java.sql.Driver em seus drivers de banco de dados.
Tipos de drivers JDBC
As implementações do driver JDBC variam devido à grande variedade de sistemas operacionais e plataformas de hardware em que o Java opera. A Sun dividiu os tipos de implementação em quatro categorias, Tipos 1, 2, 3 e 4, que são explicados abaixo -
Tipo 1: driver de ponte JDBC-ODBC
Em um driver Tipo 1, uma ponte JDBC é usada para acessar os drivers ODBC instalados em cada máquina cliente. O uso de ODBC requer a configuração em seu sistema de um Nome de Origem de Dados (DSN) que representa o banco de dados de destino.
Quando o Java foi lançado, este era um driver útil porque a maioria dos bancos de dados suportava apenas o acesso ODBC, mas agora esse tipo de driver é recomendado apenas para uso experimental ou quando nenhuma outra alternativa está disponível.
O JDBC-ODBC Bridge que vem com o JDK 1.2 é um bom exemplo desse tipo de driver.
Tipo 2: API Nativa JDBC
Em um driver Tipo 2, as chamadas de API JDBC são convertidas em chamadas de API C / C ++ nativas, que são exclusivas do banco de dados. Esses drivers são normalmente fornecidos pelos fornecedores de banco de dados e usados da mesma maneira que a ponte JDBC-ODBC. O driver específico do fornecedor deve ser instalado em cada máquina cliente.
Se mudarmos o Banco de Dados, teremos que mudar a API nativa, pois ela é específica para um banco de dados e agora estão quase todos obsoletos, mas você pode perceber algum aumento de velocidade com um driver Tipo 2, porque elimina a sobrecarga do ODBC.
O driver Oracle Call Interface (OCI) é um exemplo de driver Tipo 2.
Tipo 3: JDBC-Net Java puro
Em um driver Tipo 3, uma abordagem de três camadas é usada para acessar bancos de dados. Os clientes JDBC usam soquetes de rede padrão para se comunicar com um servidor de aplicativos de middleware. As informações de soquete são então traduzidas pelo servidor de aplicativos de middleware no formato de chamada exigido pelo DBMS e encaminhadas ao servidor de banco de dados.
Este tipo de driver é extremamente flexível, pois não requer nenhum código instalado no cliente e um único driver pode realmente fornecer acesso a vários bancos de dados.
Você pode pensar no servidor de aplicativos como um "proxy" JDBC, o que significa que ele faz chamadas para o aplicativo cliente. Como resultado, você precisa de algum conhecimento da configuração do servidor de aplicativos para usar efetivamente este tipo de driver.
Seu servidor de aplicativos pode usar um driver Tipo 1, 2 ou 4 para se comunicar com o banco de dados, compreender as nuances será útil.
Tipo 4: Java 100% puro
Em um driver Tipo 4, um driver baseado em Java puro se comunica diretamente com o banco de dados do fornecedor por meio de conexão de soquete. Este é o driver de melhor desempenho disponível para o banco de dados e geralmente é fornecido pelo próprio fornecedor.
Este tipo de driver é extremamente flexível, você não precisa instalar nenhum software especial no cliente ou servidor. Além disso, esses drivers podem ser baixados dinamicamente.
O driver Connector / J do MySQL é um driver Tipo 4. Devido à natureza proprietária de seus protocolos de rede, os fornecedores de banco de dados geralmente fornecem drivers do tipo 4.
Qual driver deve ser usado?
Se você estiver acessando um tipo de banco de dados, como Oracle, Sybase ou IBM, o tipo de driver preferencial é 4.
Se seu aplicativo Java estiver acessando vários tipos de bancos de dados ao mesmo tempo, o tipo 3 é o driver preferencial.
Os drivers do tipo 2 são úteis em situações em que um driver do tipo 3 ou 4 ainda não está disponível para seu banco de dados.
O driver tipo 1 não é considerado um driver de nível de implantação e normalmente é usado apenas para fins de desenvolvimento e teste.