Boa parte dos desenvolvedores de sistemas de informação experientes, ao ouvirem falar sobre “middleware”, camada do meio ou drivers de conexão externos à linguagem de programação quase tem um colapso. Isso é compreensível e advém do tempo em que se usar middleware, ou seja, programar em 3 camadas (Aplicação -> Middleware -> Banco de Dados), com os GAs (grupos de arquivos: Dbase, Paradox, FoxPro, etc…) era um verdadeiro martírio. Além deste tipo de recurso tornar o acesso muito mais lento à base de dados que o acesso nativo (Aplicação -> Banco de Dados), era muito mais passível à bugs e outros problemas técnicos (programação client x server). Que o digam quem trabalhou ou ainda trabalha com a BDE, por exemplo.
No entanto, programar fazendo uso de tecnologias como ODBCs, ADO, DAO, JDBC, dentre outras, não só pode ser necessário (dependentemente do “casamento” que se quer realizar entre linguagem de programação e SGBD), como pode ser extremamente estratégico (sistemas que conversam e se adequam facilmente à vários bancos de dados). Ainda em tempo, é preciso entender que as middlewares melhoraram muito nos últimos anos. Agora elas existem para os mais variados sabores de sistemas operacionais e, possuem versões altamente customizadas e desenvolvidas pelos próprios fabricantes dos bancos de dados (quase todos os SGBDs de mercado, possuem middlewares gratuitas).
Contudo é comum, principalmente aos desenvolvedores de início de carreira fazer confusão ou até mesmo desconhecer as terminologias que cercam o assunto em questão. Assim sendo, pegarei emprestado aqui as definições contidas no Dicionário de Termos Técnicos mantido pelo GuiadoHardware.net e o próprio wikipédia para montar uma pequena relação de termos:
Middleware
Um programa que permite que dois sistemas diferentes possam se comunicar. Por exemplo, permitir que um determinado programa, capaz de acessar um determinado banco de dados, possa acessar bancos de dados em outros formatos. Outro exemplo é a possibilidade de permitir que servidores de diferentes plataformas trabalhem em conjunto. Que tal servidores Alpha e Linux combinados num sistema de processamento paralelo? É uma das possibilidades.
ODBC
Open Database Connectivity, padrão criado pela Microsoft que permite que vários bancos de dados, criados por programas diferentes, como o DBASE, Oracle e Microsoft Access possam ser acessados usando uma interface comum, independentemente do formato do arquivo.
ADO
O ADO (ActiveX Data Objects) é um mecanismo component object model feito pela Microsoft que os programas de computador utilizam para a troca de informações com as bases de dados.
JDBC
Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o envio de instruções SQL para qualquer banco de dados relacional; Api de baixo nível e base para api’s de alto nível; Amplia o que você pode fazer com Java; Possibilita o uso de Banco de dados já instalados; Para cada Banco de dados há um driver JDBC que pode cair em quatro categorias.
DAO
É um padrão para persistência de dados que permite separar regras de negócio das regras de acesso a banco de dados. Numa aplicação que utilize a arquitetura MVC, todas as funcionalidades de bancos de dados, tais como obter as conexões, mapear objetos para tipos de dados SQL ou executar comandos SQL, devem ser feitas por classes de DAO.
RDO
RDO é uma tecnologia da Microsoft cuja sigla tem o significado Remote Data Object (Objeto de Dados remoto), permitindo a criação de interfaces que podem chamar ODBC diretamente. Isto é considerado útil para velocidade, controle geral, e facilita o trabalho da programação.