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());
        }

    }

}

results matching ""

    No results matching ""