Conectividade Java com Banco de dados (do Ingês Java Data Base Connectivity - JDBC) é um conjunto de funcionalidade que padroniza e define como pode ser realizado o acesso ao banco de dados de forma transparente aos diversos fabricantes e tecnologias utilizadas para esse acesso.
Em outras plataformas é necessário que o desenvolvedor conheça o banco de dados, e programe toda a parte que envolve a conexão entre o aplicativo e banco de dados. Para cada novo sistema ou para cada banco diferente, milhares de linhas de programação utilizadas apenas para permitir que a aplicação faça buscas num banco de dados. Observe a figura abaixo, mostra um acesso direto ao banco de dados:
Figura 86 (clique na imagem para ampliar)
A plataforma Java criou o JDBC, que padroniza o modo de como as aplicações devem acessar o banco de dados. Desta forma, com o acesso padronizado, cada fornecedor de banco de dados fornece uma biblioteca, feita em Java, obedecendo este padrão. Estas bibliotecas são chamadas de “Driver JDBC”, e toda a complexidade de acesso e conexão com um banco de dados fica contigo nele, desonerando o programador da complexidade do acesso ao banco de dados. A próxima figura mostra uma aplicação utilizando um “Driver JDBC”:
Figura 87 (clique na imagem para ampliar)
Mesmo utilizando um driver JDBC, a aplicação deve abrir muitas conexões com o banco de dados. O processo de criar uma conexão com um banco de dados é lento e consome muitos recursos (memória, CPU e rede), tanto da aplicação quanto do banco de dados, certos bancos de dados as licenças são cobradas por conexão, o que também elevaria o custo. Para evitar estes problemas o ideal seria utilizar conexões somente quando a aplicação for ao banco, assim irão ocorrer poucas conexões ativas simultâneas, baixando o consumo de recursos e, em certos casos, até o custo das licenças. Porém efetuar um gerenciamento assim é complexo, praticamente voltamos para uma situação similar antes da utilização de “drivers JDBC” (veja Java Data Base Connectivity (JDBC)).
Para resolver este problema, a especificação JEE criou um recurso chamado Origem de dados (Datasource), que é um objeto configurável, ou seja, não há necessidade de esforço por parte do programador. A Origem de dados permite a criação de um conceito chamado pool (piscina do Inglês), Este conceito permite, ao iniciar o sistema, a criação de um número de conexões com o banco de dados. Estas conexões ficarão abertas o tempo todo, quando uma aplicação precisar se comunicar com o banco de dados, ela solicita uma destas conexões através da árvore JNDI. Podemos configurar alguns itens:
· Quantidade mínima de conexões: quando as conexões não estiverem em uso, serão encerradas até chegarem neste valor;
· Quantidade máxima de conexões: caso a quantidade mínima fique completamente um uso, o sistema aumenta o número de conexões até atingir o máximo;
· Quantidade inicial de conexões: quando o sistema iniciar é o número de conexões que serão abertas, deve ser maior que a quantidade mínima e menor que a máxima.
Quanto uma aplicação encerra a utilização da conexão da Origem de dados (Datasource), ela não é encerrada, mas volta a ficar disponível no pool de conexões. Veja abaixo o esquema de um Datasource simplificado:
Figura 88 (clique na imagem para ampliar)
Agora faça um teste prático para entender o que é uma driver JDBC e um Datasource.
Clique em teste do Driver JDBC, para ver o driver funcionando sem o Weblogic e clique em teste de Datasource para ver o mesmo driver sendo gerenciado pelo Weblogic.