Olá desenvolvedores, dando continuidade aos estudos do módulo sobre JSP, hoje falaremos sobre filter e conexão JDBC – Java DataBase Connectivity, aliás, você poderá ler mais sobre o JDBC aqui.
No tutorial anterior implementamos uma simples validação de login utilizando servlet. No entanto, nosso código implementava uma verificação direta, manual e em linha de código. Mas e se tivéssemos mais de um usuário, e se tivéssemos dez ou mais usuários? Neste caso o ideal é uma verificação no banco de dados, onde teremos armazenadas senha e login de cada usuário.
ADICIONANDO DRIVER JDBC
E para esta implementação trabalharemos com o SGBD PostgreSQL. Assim, para começarmos, precisaremos da biblioteca do Postgre, se você é aluno do Formação Java Web poderá abaixar logo abaixo da aula. E se você não é aluno, espero que não demore se juntar a nossa grande comunidade, mas, poderá baixar a versão da sua escolha aqui, no site oficial, PostgreSQL JDBC Driver.
Uma vez adicionado o driver clique com o botão direito sobre ele (postgresql-9.1-903.jdbc4.jar) >> Build Path >> Add to Build Path.
CRIANDO CONEXÃO JDBC
O próximo passo é a criação de um novo package – connection, com o recorrente objetivo de manter uma estrutura organizacional, que facilite o entendimento e a manutenção do seu sistema. E dentro do pacote, crie uma classe Java – SingleConnection, que será a responsável pela conexão com o banco de dados.
No escopo da classe definiremos os atributos de conexão, que serão todos do tipo estáticos (static). Isto é, atributos estáticos de uma classe são aqueles que podem ser compartilhados por todas as instâncias dessa classe. Dessa forma se o valor de um campo estático for modificado por uma das instâncias, tal modificação será refletida em todas as instâncias da mesma classe.
Utilizaremos também a classe Connection do java.SQL que inicialmente será definida como nula. Esta classe estabelece uma conexão com um banco de dados específico.
Na sequência criaremos uma chamada estática para o “método conectar”. Dessa forma, sempre que a classe SingleConnection for invocada, o “conectar” será executado, garantindo assim a conexão com o banco.
static {
connection();
}
Será necessário também um construtor que igualmente implementa o “conectar”. E agora sim, implementaremos o método conectar de fato, será do tipo estático (static) com visibilidade privada(private).
BLOCO TRY/CATCH
É essencial que o “método conectar” tenha um tratamento de exceções, ou seja, que implemente o bloco try/catch. Desse modo, o bloco catch deverá implementar um RuntimeException, uma exceção em tempo de execução que exibe uma mensagem. E implementará também o e.printStackTrace para imprimir na tela o erro.
catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Erro de conexão com o banco de dados");
}
Ao passo que o bloco try deverá implementar um laço de decisão, isto é, se não existir uma conexão, ou seja, se ela for nula, a conexão deverá então ser estabelecida. Caso contrário, já existe uma conexão ativa, e esta deverá ser retomada.
No escopo do if teremos uma chamada para o forName, que fará com que a classe chamada seja inicializada, neste caso, o banco de dados. Na sequência o objeto connection, receberá a classe DriverManager que tentará carregar as classes de driver invocando o getConnection. Este por sua vez tentará estabelecer uma conexão com o URL do banco de dados especificado.
Em outras palavras, o DriverManager tentará selecionar um driver apropriado do conjunto de drivers JDBC registrados. E para que a conexão não “commite” automaticamente colocamos um setAutoCommit(false).
O commit é um comando que grava definitivamente os efeitos dos comandos de uma transação em um banco de dados (insert, delete e update). Assim, ele define o modo de confirmação dessa transação para o estado especificado. Por padrão, o modo de confirmação é automático.
E para finalizar será necessário também um método simples para retornar a conexão.
public static Connection getConnection() {
return connection()
}
CRIANDO O BANCO DE DADOS
Agora criaremos o banco de dados, abra o seu pgAdmin e entre com seu login e senha. Clique com o botão direito sobre DataBase >> Create > > DataBase. Defina o nome do banco e o nome do usuário.
EM POUCAS PALAVRAS
Com o tutorial de hoje reforçamos nossos conhecimentos acerca da conexão com o banco de dados, por meio do JDBC – Java DataBase Connectivity. Espero que tenha entendido e que principalmente os porquês tenham ficados claros.
Pratique repetidamente a construção dessa classe de conexão com o banco de dados, porém, consciente do que está fazendo. Sabendo o porquê de estar criando este ou aquele método ou o porquê de estar escrevendo esta ou aquela linha de código, só assim você irá de fato aprender. Eu fico por aqui, nos vemos no próximo tutorial.