3.9 PersistenciaDados.java
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="br.aiec.negocio.Pessoa"%> <%--Importando as taglibs core e formating JSTL --%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%--Alterando o locale --%> <fmt:setLocale value="${idioma}" /> package br.aiec.persistencia; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedList; import java.util.List; import br.aiec.negocio.Pessoa; public class PersistenciaDados { //FQDN da classe principal do driver JDBC para o Mysql private String DRIVER = "com.mysql.jdbc.Driver"; //URL de conexão com o banco de dados aiec private String URL = "jdbc:mysql://localhost:3306/aiec"; //Usuário de conexão do banco de dados private String USER = "root"; //Senha do usuário de conexão do banco de dados private String PASSWORD = "123456"; //Objeto de conexão com o banco de dados private Connection conexao; /** * O método construtor tem por finalidade registrar o driver JDBC e inicializar a conexão com o SGBD */ public PersistenciaDados() { try { //Registrando o Driver para o MySQL Class.forName(DRIVER); //Estabelecendo a conexão com SGBD conexao = DriverManager.getConnection(URL, USER, PASSWORD); } catch (SQLException e) { throw new RuntimeException("Falha na conexão com o SGBD.", e); } catch (ClassNotFoundException e) { throw new RuntimeException("Driver JDBC não encontrado.", e); } } /** * O método tem por finalidade gravar um objeto na tabela de pessoa do banco de dados * * @param pessoa */ public void gravarPessoa(Pessoa pessoa){ //Query sql para inserir os dados da pessoa no banco String sql = "INSERT INTO tbl_pessoa (nome, dataNascimento) VALUES (?, ?)"; try { //Interface universal da API JDBC PreparedStatement pstmt; //criando o objeto do tipo PreparedStatement a partir da conexão pstmt = conexao.prepareStatement(sql); //Alterando o primeiro simbolo de ? da query pelo nome do parâmetro do tipo Pessoa pstmt.setString(1, pessoa.getNome()); //Alterando o segundo simbolo de ? da query pela data de nascimento do parâmetro do tipo Pessoa pstmt.setDate(2, new Date(pessoa.getDataNascimento().getTime())); //Executando a query no banco pstmt.execute(); //Finalizando a query pstmt.close(); } catch (SQLException e) { throw new RuntimeException("Falha ao inserir a pessoa na tbl_pessoa", e); } } /** * O método tem por finalidade consultar todas as pessoas (registros) presentes no banco de dados * @return */ public List<Pessoa> consultarTodasPessoas() { //Query sql para consultar todas as pessoas do banco String sql = "SELECT * FROM tbl_pessoa"; //Lista de retorno que conterá as pessoas registradas no banco List<Pessoa> listPessoas = new LinkedList<Pessoa>(); try { //Interface universal da API JDBC PreparedStatement pstmt; //criando o objeto do tipo PreparedStatement a partir da conexão pstmt = conexao.prepareStatement(sql); //Executando a query no banco ResultSet rs = pstmt.executeQuery(); //Percorrendo o resultado da query while (rs.next()) { //Criando um objeto do tipo Pessoa Pessoa pessoa = new Pessoa(); //Lendo o registro nome da posição atual e gravando no objeto do tipo Pessoa pessoa.setNome(rs.getString("nome")); //Lendo o registro dataNascimento da posição atual e gravando no objeto do tipo Pessoa pessoa.setDataNascimento(rs.getDate("dataNascimento")); //Adicionando o objeto do tipo pessoa a lista de resultados listPessoas.add(pessoa); } } catch (SQLException e) { throw new RuntimeException("Falha ao consultar todas as pessoas na tbl_pessoa", e); } //retornando a lista com todos os registros presentes no banco. return listPessoas; } }
Observe que a classe “PersistenciaDados.java” é responsável por persistir os dados no banco de dados utilizando a API JDBC e o driver JDBC para o SGBD MySQL.