Persistência de dados com JDBC
Depois de criadas as classes de negócio passa-se à implementação dos métodos de acesso e persistência dos dados na base de dados.
O padrão de arquitetura MVC não cita especificamente a camada de acesso aos dados, porque subentende-se que estes métodos estariam encapsulados pelo Model.
O JDBC(Java Database Connectivity) é uma API incluida na linguagem java para o acesso à bases de dados. Esta API consiste num conjunto de classes e interfaces escritas em Java e oferecem todos os recursos necessarios para a programação com base de dados. Para se fazer a conexao, é necessario adiconar o Driver JDBC relativo ao sistema de gestão de base de dados a ser utilizado. O driver JDBC é a ponte necessária para a conexão com a base de dados.
No caso da aplicação em desenvolvimento neste Ebook, o Sistema de Gestão de Base de Dados a utilizar é o MYSQL e portanto será necessário o MYSQL JDBC Driver. O Netbeans possui suporte nativo para este driver e portanto apenas é necessário adiconar o driver ao projecto.
Para adicionar o MYSQL JDBC Driver faz-se clique com o botão direito do mouse sobre o projecto e escolhe-se a opção Properties(Propriedades) em Categories(Categorias) seleccionar-se Libraries(Bibliotecas) e depois faz-se clique sobre o botao Add Library(Adicionar biblioteca). Se a libraria nao estiver disponivel fazer cliquem em Import Library e procurar a livraria na lista e depois fazer clique sobre o botão Import Library , Add Library, sucessivante e depois OK.
Conexão com a base de dados
Para criar a conexão com a base de dados será utilizado o padrão Connection Factory que define uma única classe que proverá uma fabrica de conexão com a aplicação.
Esta classe será responsável por abrir e fechar a conexão com a base de dados. Para o projecto em desenvolvimento será criada uma classe com dois métodos, um para abrir e outro para fechar a conexão com a base de dados.
Para a abertura da conexao será criado o medoto getConnection(), que nao recebe nenhum paramentro e retorna um objecto Connection do pacote java.sql. Para efectiva esta abertur o metodo persnoalisado utilizará o método getConnection() do DriverManager que recebe a URL, o utilizador e a password da base de dados.
Para fechar a base de dados será criado o método closeConnection() que receberá um objecto to tipo Connection e para em seguida fecha-lo. O método closeConnection() será sobrecarregado de modo a implementar a possibilidade de fechar também objecto dos tipo PreparedStatement e ResultSet.
Para o projecto em construção a classe Conexao.java será colocada no package org.ao.projeto.util
Classe Conexao.java
package org.ao.projecto.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Conexao {
public static Connection getConnection() {
Connection con;
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/tutorial_crud_javaee";
String user = "root";
String password = "root";
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException ex) {
System.err.println("Erro na conexao com a base de dados: " + ex.getMessage());
return null;
}
return con;
}
public static void closeConnection(Connection conn){
close(conn, null, null);
}
public static void closeConnection(Connection conn, PreparedStatement ps){
close(conn, ps, null);
}
public static void closeConnection(Connection conn, PreparedStatement ps, ResultSet rs){
close(conn, ps, rs);
}
private static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.err.println("Erro ao desalocar recurso: "+ex.getMessage());
}
}
}