O SQL incorporado (como em C ou COBOL) e SQLJ (uma extensão Java) requerem pré -compiladores porque eles incorporam diretamente instruções SQL * dentro do código -fonte do idioma do host. O JDBC, por outro lado, trata o SQL como dados passados para um banco de dados; Não está entrelaçado com o próprio código Java.
Eis por que um pré -compilador é necessário para as abordagens incorporadas, mas não para o JDBC:
*
Integração e compilação de código: As instruções SQL e SQLJ incorporadas não são entendidas pelo padrão C, COBOL ou Java. O trabalho do pré -compilador é:
*
analisar o SQL: Ele analisa as instruções SQL incorporadas, verificando a sintaxe e validando as interações de banco de dados.
*
Gere Código do idioma do host: Ele traduz essas instruções SQL em chamadas para uma API de um driver de banco de dados (ou mecanismos de acesso ao banco de dados de baixo nível equivalentes). Isso gera código em língua do host que interage com o banco de dados, manuseio de conexão, execução de consultas e recuperação de resultados.
*
Combine com o código do idioma do host: O pré -compilador tece este código gerado de volta ao código -fonte do programa host, criando um programa completo pronto para compilação padrão.
*
mapeamento de tipo de dados: O pré -compilador lida com o mapeamento entre os tipos de dados do idioma do host e os tipos de dados do banco de dados. Isso é crucial porque a linguagem do host e o banco de dados podem usar representações diferentes para números, cordas, datas, etc.
*
Manipulação dinâmica de SQL: Se o SQL incorporado usar o SQL dinâmico (instruções SQL criadas em tempo de execução), o pré -compilador precisará gerar código apropriado para lidar com a construção e a execução dessas consultas geradas dinamicamente.
abordagem diferente do JDBC: O JDBC usa uma arquitetura completamente diferente. As declarações SQL são tratadas como seqüências de seqüências dentro do código Java. O driver JDBC lida com a tradução e a execução dessas cordas. Nenhuma pré -compilação é necessária porque:
*
Execução de tempo de execução: O SQL é enviado para o banco de dados *em tempo de execução *. O driver JDBC cuida da análise e execução das instruções SQL.
*
SQL baseado em string: O SQL é passado como uma string; O compilador Java não precisa de conhecimento especial da sintaxe SQL.
*
Responsabilidade do motorista: O driver é responsável por toda a comunicação com o banco de dados, incluindo mapeamento de tipos e manuseio de erros.
Em essência, o SQL e o SQLJ incorporados exigem que os pré -compiladores preencham a lacuna entre o idioma do host e o banco de dados no momento da compilação, enquanto o JDBC lida com essa ponte no tempo de execução usando um driver. Isso torna o JDBC mais flexível e portátil, mas potencialmente menos eficiente em alguns casos do que a abordagem bem integrada do SQL e SQLJ incorporado.