A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento WEB II Professora: Kelly de Paula Cunha.

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento WEB II Professora: Kelly de Paula Cunha."— Transcrição da apresentação:

1 Desenvolvimento WEB II Professora: Kelly de Paula Cunha

2 JPA – Java Persistence API e Hibernate O que é um dado persistente?

3 JPA – Java Persistence API e Hibernate O que é um dado persistente? Os dados podem ser transientes ou persistentes - Transientes: somente são válidos dentro de um programa ou transação, eles se perdem quando o programa ou transação termina -Persistentes: sobrevivem a várias invocações de programas

4 JPA – Java Persistence API e Hibernate ORM (Mapeamento objeto-relacional): técnica de desenvolvimento utilizada para facilitar a integração entre a programação orientada a objetos e o banco de dados relacional. - As tabelas do banco de dados são representadas através de classes e os registros de cada tabela são representados como instâncias das classes correspondentes. -Com esta técnica, o programador não precisa se preocupar com os comandos em linguagem SQL; ele irá usar uma interface de programação simples que faz todo o trabalho de persistência.

5 JPA – Java Persistence API e Hibernate ID: Nome: Renda: Usuário IDNomeRenda 1João3000,00 2Fernanda1500,00 3Paulo750,00 public void incAltExc (){ try{ retorno=st.executeUpdate("insert into cliente values (" + varId +",'" + varNome +"', " + varRenda +")";); } catch (SQLException e){ retorno = -1; } Tabela no Banco de Dados

6 JPA – Java Persistence API e Hibernate ID: Nome: Renda: Usuário IDNomeRenda 1João3000,00 2Fernanda1500,00 3Paulo750,00 Tabela no Banco de Dados OMR

7 JPA – Java Persistence API e Hibernate O código SQL é gerado automaticamente para o banco de dados específico que está sendo utilizado na aplicação - Agiliza o desenvolvimento, já que o programador não precisa escrever comandos SQL - Possibilidade de trocar de banco de dados sem ter que alterar códigos em Java, já que isso fica como responsabilidade da ferramenta.

8 JPA – Java Persistence API e Hibernate -Dentre os mapeadores de banco de dados existentes no mercado, o Hibernate se destaca pela popularidade -Ferramenta ORM open source da jBoss

9 JPA – Java Persistence API e Hibernate ID: Nome: Renda: Usuário IDNomeRenda 1João3000,00 2Fernanda1500,00 3Paulo750,00 Tabela no Banco de Dados OMR = Hibernate

10 JPA – Java Persistence API e Hibernate -Surgiu a necessidade de fazer uma especificação de como fazer um Java Persistence -Java propõe uma API de referência chamada Java Persistece API (JPA) -Existem várias implementações de JPA -Hibernate é apenas uma implementação de JPA

11 JPA – Java Persistence API e Hibernate O que é o JPA? É uma API para persistir objetos. Por meio do JPA qualquer objeto com um construtor padrão pode ser persistente sem nenhuma alteração no código.

12 JPA – Java Persistence API e Hibernate JPA é um modelo de persistência baseado em POJO (Plain Old Java Object) - Velho e Simples Objeto Java – objetos que possuem design simples, não dependem da herança de interface ou classe de frameworks externos.

13 JPA – Java Persistence API e Hibernate A forma como este mapeamento é configurado depende da ferramenta utilizada. Exemplo: o programador que usa Hibernate na linguagem Java pode usar arquivos XML ou o sistema de anotações. Em outros casos o mapeamento é feito diretamente no código, através de herança de classes especiais

14 JPA – Java Persistence API e Hibernate Anotação: recurso do Java que permite inserir metadados relacionados com a classe, atributos e métodos. Essas anotações poderão ser lidas por frameworks e bibliotecas, para que tomem decisões baseadas nessas configurações. Ex: @Entity //indica que os objetos da classe se tornam persistíveis no banco de dados.

15 JPA – Java Persistence API e Hibernate Principais Anotações JPA:

16 JPA – Java Persistence API e Hibernate Observação: Apesar do Hibernate ter originado a JPA o EclipseLink é a implementação referencial.

17 JPA – Java Persistence API e Hibernate Entidade na JPA -Toda entidade tem de ter um construtor sem argumentos -Cada atributo deve possuir seu get e set -Toda entidade tem de ter uma chave primária

18 JPA – Java Persistence API e Hibernate Entidade na JPA Exemplo: @Entity public class Tarefa { @Id @GeneratedValue private Long id; private String descricao; private boolean finalizado; @Temporal(TemporalType.DATE) private Calendar dataFinalizacao; // métodos... }

19 JPA – Java Persistence API e Hibernate Explicação: @Id indica que o atributo id é chave primária @GeneratedValue diz que esta chave fará auto increment ou sequence, dependendo do banco de dados. @Temporal configura como mapear um Calendar para o banco, aqui usamos apenas a data (sem hora), mas poderíamos ter usado apenas a hora (TemporalType.TIME) ou timestamp (TemporalType.TIMESTAMP). Observações: Essas anotações precisam dos devidos imports, e pertencem ao pacote javax.persistence.

20 JPA – Java Persistence API e Hibernate Na ausência de configurações mais específicas, o Hibernate vai usar convenções: a classe Tarefa será gravada na tabela de nome também Tarefa, e o atributo descricao em uma coluna de nome descricao Se quisermos configurações diferentes das convenções, basta usarmos outras anotações, que são completamente opcionais. Exemplo: para mapear o atributo dataFinalizacao numa coluna chamada data_finalizado faríamos: @Column(name = "data_finalizado", nullable = true) private Calendar dataFinalizacao;

21 JPA – Java Persistence API e Hibernate O JPA necessita de configurações, e para isso criaremos o arquivo persistence.xml. Alguns dados que vão nesse arquivo são específicos do Hibernate e podem ser bem avançados, sobre controle de cache, transações, connection pool etc, tópicos que são abordados no curso FJ-25. Para um sistema simples, é necessário 4 linhas : 1)string de conexão com o banco, 2)o driver, 3)o usuário e 4)senha. Além dessas quatro configurações, é necessário dizer qual dialeto de SQL deverá ser usado no momento que as queries são geradas; no nosso caso, MySQL.

22 JPA – Java Persistence API e Hibernate Segue uma configuração completa que define uma unidade de persistência (persistence-unit) com o nome tarefas, seguidos pela definição do provedor, entidades e properties:

23 JPA – Java Persistence API e Hibernate org.hibernate.ejb.HibernatePersistence br.com.caelum.tarefas.modelo.Tarefa

24 JPA – Java Persistence API e Hibernate U SANDO O JPA Primeiro passo: fazer com que o JPA leia a configuração tanto o arquivo persistence.xml quanto as anotações que colocadas na entidade Tarefa. Para tal, usaremos a classe principal. Ela é responsável de carregar o XML e inicializar as configurações: EntityManagerFactory factory = Persistence.createEntityManagerFactory("tarefas");

25 JPA – Java Persistence API e Hibernate Antes de gravar uma Tarefa, é necessário que exista a tabela correspondente no nosso banco de dados. Em vez de criarmos o script que define o schema (ou DDL de um banco, data definition language) do nosso banco (os famosos CREATE TABLE....) podemos deixar isto a cargo do próprio Hibernate. Ao inicializar a EntityManagerFactory também será gerada uma tabela Tarefas pois configuramos que o banco deve ser atualizada pela propriedade do Hibernate: hbm2ddl.auto.

26 JPA – Java Persistence API e Hibernate classe GeraTabelas public class GeraTabelas { public static void main(String[] args) { EntityManagerFactory factory = Persistence. createEntityManagerFactory("tarefas"); factory.close(); }

27 JPA – Java Persistence API e Hibernate O JPA possui uma linguagem própria de queries para facilitar a busca de objetos chamada de JPQL. O código a seguir mostra uma pesquisa que retorna todas as tarefas não finalizadas: EntityManager manager = List lista = manager.createQuery("select t from Tarefa as t where t.finalizado = false").getResultList(); for (Tarefa tarefa : lista) { System.out.println(tarefa.getDescricao()); }


Carregar ppt "Desenvolvimento WEB II Professora: Kelly de Paula Cunha."

Apresentações semelhantes


Anúncios Google