Olá desenvolvedores, seguindo com a nossa série de tutoriais sobre SQL e JDBC, hoje aprenderemos a criar a conexão com o banco de dados. Ou melhor, criar a classe de conexão com o SGBD PostgreSQL. E lembrando sempre da máxima da Orientação a Objetos, a cada classe uma única responsabilidade.
Dessa forma a classe que possibilitará a conexão com o banco de dados, fará apenas isso. Porém, dentro deste contexto ela nos dará toda estrutura necessária para desenvolvermos nosso sistema. Além disso, a conexão com o banco de dados compreende o primeiro passo no desenvolvimento de sistemas.
Atente-se para o que iremos fazer agora com objetivo de uma melhor organização, delete as respectivas classes das pastas src/main e src/test. Agora clique com o bostão direito sobre o diretório src/main, New >> Package, e crie um novo pacote, conexão_jdbc. Dentro do novo pacote crie uma nova classe com o nome de SingleConnection. Para criar o novo pacote clique com o botão direito do mouse >> New >> Class.
IMPLEMENTANDO A CONEXÃO
O próximo passo é definir alguns atributos para a Classe SingleConnection, como URL do banco, nome do usuário, senha, o objeto do SQL Connection qual receberá um valor null. Estes atributos serão static e de visibilidade private, com exceção do objeto serão todos do tipo String.
A URL onde a conexão é feita com o JDBC no banco PostgreSQL, traz a localização do banco (localhost), a porta padrão do postgree (5423) e o nome do banco, que neste caso é o (posjava).
private static String url = “jdbc:postgresql://localhost:5432/posjava”;
private static String password = "admin";
private static String user = "postgres";
private static Connection connection = null;
O próximo passo é a implementação de um método construtor que chamará o método conectar e que implementaremos a seguir. O método conectar será acessível somente dentro da classe e, portanto, terá visibilidade private e não retornará nada.
Public SingleConnection(){
Conectar();
}
Private static void conectar(){
}
Porém, ainda acima do construtor, iniciaremos uma static chamando o método conectar, dessa forma, de qualquer lugar com a classe SingleConnection for invocada ela chamará o conectar.
Static{
Conectar();
}
E por fim o método que retornará a conexão, ou seja, o objeto connection, do pacote javaSQL. E como ele tem que ser acessível de qualquer lugar do projeto terá visibilidade public.
Public static Connection getConnection(){
return connection;
}
TRABALHANDO COM O MÉTODO CONECTAR
O método conectar, ou seja, o responsável direto pela implementação da conexão com o banco, sempre implementa um try/catch. Onde dentro da exceção tratamos a prevenção de um possível erro de conexão. E dentro do bloco try implementa-se a conexão.
Voltando aos atributos, lembre-se que atribuímos um valor nulo ao objeto connection, assim, dentro do bloco try implementaremos o laço de decisão if. Onde determinaremos que, se a conexão estiver nula ele se conectará, e se não estiver ele não fará nada. É por esse motivo que a instanciação do objeto connection sempre receberá um valor nulo.
Try{
if(connection == null){
}
}
Atente-se, a conexão é aberta uma única vez e então é mantida. As sessões sim, podem ser abertas e encerradas a todo instante. Mas para que isso seja possível precisamos carregar o drive que iremos usar para possibilitar esta conexão.
If(connection == null){
class.forName("org.postgresql.Driver");
}
E então atribuiremos para o objeto connection o DriverManager que irá pegar a url do banco, neste caso, local, bem como usuário e senha. E para que o banco não salve os dados de forma automática, passamos a conexão um setAutoCommit com o valor false.
If(connection == null){
class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection(url, user, password);
connection.setAutoCommit(false);
}
POSTGRESQL – PGADMIN
Agora abra o seu banco de dados, claro que você pode trabalhar com o banco da sua preferência, mas aqui no curso de Formação Java Web, utilizamos o PostgreSQL. Abra sua conexão para criarmos o banco posjava.
Clique com o botão direito sobre o diretório Database >> create >> Database, defina o nome do banco e o usuário e clique em Save.
Clicando cobre o banco observe que ele já traz um pequeno trecho de script SQL, por segurança copie todo este trecho de código, no notepad++, por exemplo. ATENÇÃO clique em outro banco para habilitar a edição do SQL.
Agora delete o banco “posjava” que acabou de criar, cujo código você fez backup. Porém, com o botão Query Tool habilitado clique sobre ele (o botão) para novamente criar a base de dados “posjava”.
Pessoalmente, crio o banco de dados mantendo apenas usuário, a codificação ‘UTF8’, o layout padrão da tabela e uma conexão sem limites.
CREATE DATABASE posjava
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
CONNECTION LIMIT = -1
Após isso, execute usando a tecla de função F5, ou clique em Execute/Refresh (F5).
Se a mensagem semelhante a “Query returned successfully in 14 secs 454 msec”, for exibida significa que está tudo certo.
No menu lateral selecione Database de um F5 para atualizar e exibir o banco que acabou de criar.
TESTANTO O BANCO DE DADOS
Agora usar o JUnit para testar a conexão com o banco de dados. No Eclipse, no pacote de testes dentro do diretório src/test crie uma nova classe new >> Class, dê a classe o nome de TesteBancoJdbc.
Dentro da classe TesteBancoJdbc criaremos um método initBanco que terá a responsabilidade de chamar a SingleConnection.
@Test
public void initBanco(){
singleConnection.getConnection();
}
Importaremos a biblioteca org.junit.Test; a partir da anotação @Test inserida logo acima do método initBanco().
E para termos certeza de que a conexão foi realizada com sucesso, dentro do bloco Try do método conectar, implementaremos o método print com uma mensagem.
System.Out.Println(“Conexão realizada com sucesso”);
Estando tudo implementado corretamente a mensagem de conexão bem sucedida será exibida no console.
EM POUCAS PALAVRAS
Neste tutorial aprendemos a não somente estabelecer conexão com o banco de dados como até mesmo a criar um banco de dados, por meio de código SQL. Reveja este tutorial quantas vezes forem necessárias, e não siga adiante em seus estudos enquanto estiver com dúvidas. Eu fico por aqui, nos vemos no próximo tutorial.