Curso de Java
PARTE 05
Persistência de Dados
Introdução à:
JDBC
Maven
CRUD
Padrão DAO
JPA/Hibernate
por: Mário Sergio
mariosergio30@gmail.com
linkedin.com/in/mario-sergio-a1125831
JDBC
4
É essencial que qualquer linguagem de programação faça acesso aos diversos
bancos de dados disponíveis no mercado, principalmente no desenvolvimento de
sistema corporativos.
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
Driver´s
específicos
Saber mais: https://www.devmedia.com.br/aprendendo-java-com-jdbc/29116
Projetos de Exemplo
JDBC BÁSICO:
https://github.com/mariosergio30/aprendendoPersistencia_1JDBC.git
JDBC COM DAO:
https://github.com/mariosergio30/https://github.com/mariosergio30/aprendendoPersistencia_2DAO
JPA:
https://github.com/mariosergio30/aprendendoPersistencia_3JPA.git
7
Exemplo de uso:
Instrução INSERT
Instrução SELECT (ResultSet)
A classe ResultSet respresenta uma
Matriz contendo as colunas e linhas
resultantes da consulta select
JDBC
Projeto de exemplo: Executando
12OBS: Executar método main da classe Application
Maven
Um dos principais problemas no desenvolvimento
de sistemas é como fazer com que toda a
equipe construa o artefato final da mesma
maneira com as bibliotecas e configurações
corretas.
13
O Maven é uma ferramenta de integração de projetos.
Com ele fica mais fácil:
- Gerenciar dependências (bibliotecas externas)
- Controlar versão de artefatos
- Integrar múltiplos módulos de uma aplicação.
Saber mais: http://www.dclick.com.br/2010/09/15/o-que-e-o-maven-e-seus-primeiros-passos-com-a-ferramenta/
Maven
16
Verificando configuração no Eclipse:
As versões atuais do eclipse já possuem uma instalação do maven embutida, mas se desejar você poderia
utilizar outra versão do maven previamente existente em outro local em seu computador.
Maven: Baixar e instalar
17
Baixar e instalar: https://maven.apache.org/ OBS: somente necessário se
você não desejar utilizar instalação
do maven embutida no eclipse
Eclipse: Criando um novo projeto Maven
19
Projeto criado pelo maven:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
Assim, você poderia importar as dependências
para usar o driver JDBC do MySQL
CRUD EM JAVA
Mas, Como fazer o controle CRUD em JAVA ?
A grande maioria das aplicações de nível corporativo usam algum tipo de
persistência de dados. Entre eles o mais usado é o Banco de Dados. A
linguagem SQL é amplamente utilizada para comunicar com os
sistemas gerenciadores de banco de dados (SGBD). Java suporta esta
necessidade desde cedo através da API JDBC (Java Database
Connectivity).
Utilizar o padrão de Projeto DAO
Esta ideia, inocente à primeira vista, é capaz de isolar todo o acesso a banco de
dados em classes bem simples, cuja instância é um objeto responsável
por acessar os dados. Da responsabilidade deste objeto surgiu o nome de Data
Access Object ou simplesmente DAO, um dos mais famosos padrões de projeto
(design pattern).
O Padrão DAO
DAO (Data Access Object) se refere a classe que irá fazer a comunicação de seu
programa com o banco de dados. Esse padrão promove a reutilização de código,
também promove a boa manutenção do código pois ele isola o código de acesso ao
banco de dados das regras de negócio.
Primeiro passo: Criação da tabela no banco de dados.
Abra seu cliente sql favorito para o seu banco de dados e crie a tabela de
produtos. Supondo que você esteja usando o mysql:
Segundo Passo: Criação da classe Modelo Entidade que represente essa
tabela. Você precisa de uma Classe-Entidade para seu sistema, a fim de
desfrutar dos benefícios da orientação a objetos.
Terceiro Passo: Criação da classe modelo DAO para cada classe do
Modelo. DAO (Data Access Object) se refere a classe que irá fazer a
comunicação de seu sistema com o banco de dados. Essa classe precisa
dispor de métodos para fazer o CRUD, geralmente definidos por uma
INTERFACE EM JAVA.
public class Produto {
private int id;
private String nome;
private String descricao;
......
CREATE TABLE `produto` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`nome` text NOT NULL,
`descricao` text NOT NULL,
PRIMARY KEY (`id`)
public interface DAO<T> {
T create () ;
void insert ( <T> obj ) ;
void update ( <T> obj ) ;
void delete ( <T> obj ) ;
List<T> select() ;
}
O Padrão DAO
INTERFACE EM JAVA:
Uma INTERFACE em JAVA é um CONTRATO
que o projetista de classes assina, garantindo
que sua classe ofereça todos os métodos da
interface.
Uma interface é como se fosse uma classe
abstrata somente com métodos abstratos
(sem corpo).
Aqui temos uma classe que
implementa a interface
InterfaceCrudDAO, obrigando-se
a implementar todos os métodos
previstos pela interface.
Obs: código completo, no pacote modeloDAO de
exemplo de aula
O Padrão DAO
PROJETO EXEMPLO:
Exemplo completo: projeto Eclipse aprendendoPersistencia02_DAO.zip (Classe Application)
JPA - JAVA PERSISTENCE API
Saber mais: https://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-com-hibernate/
MAPEAMENTO OBJETO RELACIONAL
Com a popularização do Java em ambientes corporativos, logo se percebeu que
grande parte do tempo do desenvolvedor era gasto na codificação de queries SQL e no
respectivo código JDBC responsável por trabalhar com elas.
Além de um problema de produtividade, algumas outras preocupações aparecem: SQL
que, apesar de ter um padrão ANSI, apresenta diferenças significativas dependendo do
fabricante. Não é simples trocar um banco de dados pelo outro.
A ideia é que o programador não precise escrever código SQL em no código
java. O Hibernate abstrai o seu código SQL, toda a camada JDBC e o SQL será
gerado em tempo de execução.
Hibernate é uma ferramenta open source e é a líder de mercado, sendo a
inspiração para a especificação Java Persistence API (JPA)
JPA - JAVA PERSISTENCE API
Saber Mais: https://examples.javacodegeeks.com/enterprise-java/jpa-named-query-example/
J2EE Especification
Hibernate é uma das
implementações dessa API
http://hibernate.org/
JPA - JAVA PERSISTENCE API
Exemplo completo: projeto Eclipse aprendendoPersistencia03_JPA.zip (Classe Application) 32
JPA - JAVA PERSISTENCE API
Exemplo completo: projeto Eclipse aprendendoPersistencia.zip (Classe AprendendoJDBC_JPA)
Classe Modelo: Disciplina.java (Representa a ENTIDADE do Hibernate)
Queries Nomeadas: queries.xml
Classe DAO: DisciplinaDAO.java
33