Para executar uma consulta SQL a um banco de dados desde um programa Java é preciso que um driver, que estabelece os mecanismos internos para a tradução do programa cliente (a aplicação) para o programa servidor (o gerenciador de banco de dados), esteja disponível para o sistema de banco de dados a ser acessado.
Há quatro tipos de drivers que podem ser disponibilizados para que a aplicação Java possa atuar como cliente de um servidor de banco de dados relacional:
Ponte (bridge), que utiliza um outro driver para acessar o banco de dados -- por exemplo, um driver jdbc-odbc;
Nativo/proprietário, fornecido pelo fabricante do gerenciador de banco de dados com acesso em alguma linguagem nativa da plataforma (tipicamente, C ou C++);
Nativo/middleware, também disponibilizado em linguagem nativa mas com possibilidade de acesso através da rede; e
Java, disponibilizado em Java e portanto independente de plataforma.