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
2
Aula 1
O EcoSistema JAVA
JSE Libraries J2EE Especification
https://tableless.com.br/java-o-caminho-aprendizado/?utm_source=tablelessRelatedLinkSaber mais:
Relembrando…
3
JDBC
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
6
Exemplo de uso:
Conexão ao banco
Importando classes do pacote java.sql
JDBC
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
8
JDBC
Exemplo completo: projeto Eclipse aprendendoPersistencia01_JDBC.zip (Classe Application)
Projeto de exemplo: Importando um Projeto .ZIP no Eclipse
9
OBS: importação do projeto de Exemplo: startJavaPersistencia01_JDBC.zip
Ferramenta SQL
10
Ferramenta Heidisql SQL
https://www.heidisql.com/download.php
OBS: Execute os scripts DDL e DML do projeto de exemplo
Ferramenta SQL
11
Ferramenta Heidisql SQL
https://www.heidisql.com/download.php
OBS: Execute os scripts DDL e DML do projeto de exemplo
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
14
O arquivo .pom
15
Maven
Repositório central de dependências:
https://mvnrepository.com/
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
18
File -> New -> Other...
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
20
Alguns recursos úteis em projetos Maven:
Eclipse: Update de projeto Maven
CRUD
21
Exemplos de Interfaces CRUD em Java GUI
22
Exemplos de Interfaces CRUD em Java WEB
23
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/
Maven: Inclusão de dependências do JPA Hibernate
30
Maven: Inclusão de dependências do JPA Hibernate
31
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>projetos</groupId>
<artifactId>aprendendoJDBC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<mysql.version>5.1.6</mysql.version>
<hibernate.version>4.1.1.Final</hibernate.version>
</properties>
<dependencies>
<dependency>
<groupId>oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
<scope>system</scope>
<systemPath>C:fontescursoojdbc6.jar</systemPath>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
</dependencies>
</project>
pom.xml completo:
pacotes
baixados
pelo maven
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
Obrigado
34

Curso de Java (Parte 5)

  • 1.
    Curso de Java PARTE05 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
  • 2.
    2 Aula 1 O EcoSistemaJAVA JSE Libraries J2EE Especification https://tableless.com.br/java-o-caminho-aprendizado/?utm_source=tablelessRelatedLinkSaber mais: Relembrando…
  • 3.
  • 4.
    JDBC 4 É essencial quequalquer 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
  • 5.
    Projetos de Exemplo JDBCBÁ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
  • 6.
    6 Exemplo de uso: Conexãoao banco Importando classes do pacote java.sql JDBC
  • 7.
    7 Exemplo de uso: InstruçãoINSERT Instrução SELECT (ResultSet) A classe ResultSet respresenta uma Matriz contendo as colunas e linhas resultantes da consulta select JDBC
  • 8.
    8 JDBC Exemplo completo: projetoEclipse aprendendoPersistencia01_JDBC.zip (Classe Application)
  • 9.
    Projeto de exemplo:Importando um Projeto .ZIP no Eclipse 9 OBS: importação do projeto de Exemplo: startJavaPersistencia01_JDBC.zip
  • 10.
    Ferramenta SQL 10 Ferramenta HeidisqlSQL https://www.heidisql.com/download.php OBS: Execute os scripts DDL e DML do projeto de exemplo
  • 11.
    Ferramenta SQL 11 Ferramenta HeidisqlSQL https://www.heidisql.com/download.php OBS: Execute os scripts DDL e DML do projeto de exemplo
  • 12.
    Projeto de exemplo:Executando 12OBS: Executar método main da classe Application
  • 13.
    Maven Um dos principaisproblemas 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/
  • 14.
  • 15.
    15 Maven Repositório central dedependências: https://mvnrepository.com/
  • 16.
    Maven 16 Verificando configuração noEclipse: 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.
  • 17.
    Maven: Baixar einstalar 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
  • 18.
    Eclipse: Criando umnovo projeto Maven 18 File -> New -> Other...
  • 19.
    Eclipse: Criando umnovo 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
  • 20.
    20 Alguns recursos úteisem projetos Maven: Eclipse: Update de projeto Maven
  • 21.
  • 22.
    Exemplos de InterfacesCRUD em Java GUI 22
  • 23.
    Exemplos de InterfacesCRUD em Java WEB 23
  • 24.
    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).
  • 25.
    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() ; }
  • 26.
    O Padrão DAO INTERFACEEM 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
  • 27.
    O Padrão DAO PROJETOEXEMPLO: Exemplo completo: projeto Eclipse aprendendoPersistencia02_DAO.zip (Classe Application)
  • 28.
    JPA - JAVAPERSISTENCE 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)
  • 29.
    JPA - JAVAPERSISTENCE 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/
  • 30.
    Maven: Inclusão dedependências do JPA Hibernate 30
  • 31.
    Maven: Inclusão dedependências do JPA Hibernate 31 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>projetos</groupId> <artifactId>aprendendoJDBC</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <mysql.version>5.1.6</mysql.version> <hibernate.version>4.1.1.Final</hibernate.version> </properties> <dependencies> <dependency> <groupId>oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.1.0.7.0</version> <scope>system</scope> <systemPath>C:fontescursoojdbc6.jar</systemPath> </dependency> <!-- Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.2.0.Final</version> </dependency> <dependency> <groupId>org.hibernate.common</groupId> <artifactId>hibernate-commons-annotations</artifactId> <version>4.0.1.Final</version> <classifier>tests</classifier> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> </dependencies> </project> pom.xml completo: pacotes baixados pelo maven
  • 32.
    JPA - JAVAPERSISTENCE API Exemplo completo: projeto Eclipse aprendendoPersistencia03_JPA.zip (Classe Application) 32
  • 33.
    JPA - JAVAPERSISTENCE 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
  • 34.