Persistência de dados com JDBC

A persistência de dados refere-se ao armazenamento não-volátil de dados, por exemplo, o armazenamento num dispositivo físico como um disco rígido.

Por outras palavras, pode-se dizer que a persistência consiste em manter os dados num meio físico recuperável, como uma base de dados ou ficheiro, de modo a garantir a permanência das informações do estado de um objeto lógico.

No desenvolvimento de uma aplicação que prevê persistência, 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 incluída 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 necessários para a programação com base de dados.

Para se fazer a conexão, é necessário adicionar 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 E-book, 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 adicionar o driver ao projeto.

Adição do MYSQL JDBC Driver

Para adicionar o MYSQL JDBC Driver faz-se clique com o botão direito do mouse sobre o projeto e escolhe-se a opção Properties(Propriedades) em Categories(Categorias) selecionar-se Libraries(Bibliotecas) e depois faz-se clique sobre o botão Add Library(Adicionar biblioteca). Se a libraria não estiver disponível fazer cliquem em Import Library e procurar a livraria na lista e depois fazer clique sobre o botão Import Library , Add Library, sucessivamente e depois fazer clique no botão OK.

Conexão com a base de dados

A programação do acesso e das operações de uma aplicação Java com uma base de dados relacional envolve as seguintes atividades:

  • Habilitar o driver JDBC na aplicação

  • Estabelecer a conexão entre a aplicação e o servidor de base de dados

  • Montar as instruções SQL desejadas.

Para criar a conexão com a base de dados da aplicação em desenvolvimento, será utilizado o padrão Connection Factory que define uma única classe que proverá uma fábrica 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 projeto 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 conexão será criado o método getConnection(), que não recebe nenhum parâmetro e retorna um objeto Connection do pacote java.sql.
Para efetivar esta abertura o método personalizado utilizará o método getConnection() da interface DriverManager que recebe a URL, o utilizador e a password de acesso à base de dados.

Para fechar a base de dados será criado o método closeConnection() que receberá um objeto to tipo Connection e para em seguida fecha-o. O método closeConnection() será sobrecarregado de modo a implementar a possibilidade de fechar também objetos do tipo PreparedStatement e ResultSet.

A partir da conexão é possível interagir com a base de dados, fazendo consultas, atualização e outros tipos de operações.

Para o projeto em construção a classe Conexao.java, responsável por estabelecer e manter a conexão com a base de dados, será colocada no package org.ao.mirangol.util.

 package org.ao.mirangol.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author informatica
 */
public class Conexao {

    public static Connection getConnection() {
        Connection con;
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/mirangol";
        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 ""