Prof. Marcelo Heitor Teixeira marceloheitor.com Java API JDBC # Java vs bancos de dados relacionais # JDBC Java Database Connectivity # Arquitetura JDBC # Drivers JDBC # Pool de Conexões
JDBC Java Database Connectivity
Java vs Bancos de Dados Relacionais e SQL
Os bancos de dados relacionais usam SQL como linguagem padrão e são chamados relacionais em função de algorítmos matemáticos criados por [Edgar F. Codd - IBM - Década de 1970] que permitem conjuntos de dados agrupados em tabelas se relacionarem a fim de compor uma estrutura de dados organizada. Entretanto, os bancos de dados relacionais tem seu próprio universo e não são diretamente compatíveis com java por razões óbvias.
Sabendo disso a mantenedora da JAVA, seus agregados e diversos fornecedores de bancos de dados trabalham em conjunto a fim de criar um "elo" para que uma aplicação em java possa "falar" com um banco de dados relacional e vice-versa. O papel da primeira é o de criar uma especificação que permita do lado java a conexão, daí a API JDBC. Do outro lado, o papel dos fornecedores é distribuir a outra ponta da ligação, os chamados "Drivers-JDBC".
Apenas por curiosidade segue alguns bancos de dados relacionais: DB2; Oracle; SQL-Server; PostgreSQL; MySQL; HSQLDB; etc...
JDBC - Java Database Connectivity
A API JDBC é formada por um conjunto de classes e interfaces que tornam possível a comunicação entre uma aplicação java com um banco de dados SQL ou outra fonte tabular. Mais sobre as principais interfaces e classes nos exemplos.
A API JDBC está contida em 2 pacotes: java.sql; javax.sql; e permite que 3 coisas sejam feitas: 1 - Estabelecer uma conexão com uma fonte de dados; 2 - Enviar insntruções SQL; 3 - Processar os resultados;
Arquitetura JDBC
Driver JDBC
Para usar a API JDBC com um determinado banco de dados precisamos de algo chamado "Driver-JDBC". O Driver é o mediador entre a API e o banco de dados em questão. Atualmente existem 4 tipos de drivers JDBC: Tipo 1: Faz uma ponte entre JDBC e ODBC; Torna-se mais lento por causa da ponte para conexão; Depende fortemente da API ODBC; Portabilidade reduzida; Nota: Usar a ponta JDBC-ODBC é considerada pela própria Oracle/Sun como sendo uma solução paleativa e deve ser usada apenas se a base de dados não oferecer nenhum driver jdbc.
Tipo 2: Driver nativo da API do banco de dados; Parcialmente escrito em java e parcialmente escrito com código nativo do banco; Acoplamento forte com a API do banco de dados; Deve ter um "client" do banco no lado cliente para funcionar, exemplo: Oracle Call Interface (OCI); Portabilidade reduzida; Tipo 3: Driver 100% construido em java; Usa protocolo de rede; Depende de um servidor intermediário "middleware"; Infra-estrutura pode ficar mais cara do que o necessário;
Tipo 4: 100% feito em java; Independente de plataforma; Protocolo nativo java; Depende do fornecedor do banco de dados (distribuir um driver); Driver mais usado em aplicações web;
Pool de Conexões
Objetos DataSource permitem entre outras coisas o conceito de pool de conexões. O grande benefício disso é que uma conexão ao ser finalizada não é destruida e vai para um pool no servidor de aplicação onde fica disponível para outra conexão solicitada pelo sistema. Em termos práticos usar o sistema de pool reduz muito o fator que é um dos mais caros para uma aplicação web. A conexão física. Em suma, para aplicações corporativas é essencial o uso desse sistema de conexão. Veremos um exemplo prático de data source com pool de conexões...
Exercícios!!! Faremos 2 exercícios para melhor compreensão do que foi falado. Vamos ver na prática os drivers Tipo 1 e 4. Para isso algumas configurações devem ser obedecidas. Pré-requisito para esses exercícios: Driver JDBC do MySQL; Driver ODBC do MySQL; Banco criado: contato_internet Usuário: usrcontato Password: pwdcontato Tabelas: contatos e historico_mensagens Atenção: Disparar script do banco. << exe-jdbc -> classe: ExemploJDBCTipo1 >> << exe-jdbc -> classe: ExemploJDBCTipo4 >>