SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Manoel Campos da Silva Filho
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Eduardo Carvalho
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)Mario Sergio
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemPetronio Candido
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9Helder da Rocha
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
 

Mais procurados (20)

Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Tutorial +login+mvc
Tutorial +login+mvcTutorial +login+mvc
Tutorial +login+mvc
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Java 8 - A Evolução da Linguagem
Java 8 - A Evolução da LinguagemJava 8 - A Evolução da Linguagem
Java 8 - A Evolução da Linguagem
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
A arquitetura modular do Java 9
A arquitetura modular do Java 9A arquitetura modular do Java 9
A arquitetura modular do Java 9
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 

Semelhante a Curso de Java (Parte 5)

Semelhante a Curso de Java (Parte 5) (20)

Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
1 jdbc
1 jdbc1 jdbc
1 jdbc
 
1 jdbc
1 jdbc1 jdbc
1 jdbc
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
1409243945064
14092439450641409243945064
1409243945064
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Netbeans
NetbeansNetbeans
Netbeans
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Minicurso Yii2
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-62902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
2902868 desenvolvendo-aplicacoes-web-com-net beans-ide-6
 
Java e net beans
Java e net beans Java e net beans
Java e net beans
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Aula1
Aula1Aula1
Aula1
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Conceitos de Java Web
Conceitos de Java WebConceitos de Java Web
Conceitos de Java Web
 
Jsf
JsfJsf
Jsf
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
 

Mais de Mario Sergio

Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Mario Sergio
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Mario Sergio
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Mario Sergio
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaMario Sergio
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)Mario Sergio
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitualMario Sergio
 
Educação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry PiEducação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry PiMario Sergio
 

Mais de Mario Sergio (9)

Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)
 
Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)Introdução a Banco de Dados (Parte 2)
Introdução a Banco de Dados (Parte 2)
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
 
Comparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs JavaComparação Sintaxe Portugol vs Java
Comparação Sintaxe Portugol vs Java
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitual
 
Educação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry PiEducação Tecnológica com Raspberry Pi
Educação Tecnológica com Raspberry Pi
 

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 

Último (9)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Curso de Java (Parte 5)

  • 1. 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. 2 Aula 1 O EcoSistema JAVA JSE Libraries J2EE Especification https://tableless.com.br/java-o-caminho-aprendizado/?utm_source=tablelessRelatedLinkSaber mais: Relembrando…
  • 4. 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
  • 5. 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. 6 Exemplo de uso: Conexão ao banco Importando classes do pacote java.sql JDBC
  • 7. 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. 8 JDBC Exemplo completo: projeto Eclipse 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 Heidisql SQL https://www.heidisql.com/download.php OBS: Execute os scripts DDL e DML do projeto de exemplo
  • 11. Ferramenta SQL 11 Ferramenta Heidisql SQL 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 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/
  • 15. 15 Maven Repositório central de dependências: https://mvnrepository.com/
  • 16. 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.
  • 17. 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
  • 18. Eclipse: Criando um novo projeto Maven 18 File -> New -> Other...
  • 19. 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. 20 Alguns recursos úteis em projetos Maven: Eclipse: Update de projeto Maven
  • 22. Exemplos de Interfaces CRUD em Java GUI 22
  • 23. Exemplos de Interfaces CRUD 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 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
  • 27. O Padrão DAO PROJETO EXEMPLO: Exemplo completo: projeto Eclipse aprendendoPersistencia02_DAO.zip (Classe Application)
  • 28. 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)
  • 29. 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/
  • 30. Maven: Inclusão de dependências do JPA Hibernate 30
  • 31. 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
  • 32. JPA - JAVA PERSISTENCE API Exemplo completo: projeto Eclipse aprendendoPersistencia03_JPA.zip (Classe Application) 32
  • 33. 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