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

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

Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação.

Apresentações semelhantes


Apresentação em tema: "Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação."— Transcrição da apresentação:

1 Hibernate Mapeamento O/R

2 © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação e o acesso ao banco Facilidade de uso –Controle de transações –Independência quanto ao tipo de base de dados Consulta de dados –HQL –Criteria Queries Licença LGPL

3 Hibernate - Arquitetura

4 © LES/PUC-Rio Arquitetura - Overview

5 Hibernate – Classes Persistentes

6 © LES/PUC-Rio Classes Persistentes Implementam entidades lógica do negócio POJOs (Plain Old Java Object) –Construtor padrão –Possui métodos de acesso – gets/sets (opcional) Possui um atributo identificador (opcional) Classes não final (recomendado)

7 © LES/PUC-Rio POJO - Exemplo

8 © LES/PUC-Rio POJO - Exemplo mapeamento

9 © LES/PUC-Rio Mapeamento Devemos informar ao Hibernate como relacionar o modelo de objetos com o modelo relacional Arquivos de mapeamento –Descrevem como são feitos os mapeamentos

10 © LES/PUC-Rio Arquivo de Mapeamento Arquivo XML Declaração de DTD –Útil para auto-completion Declaração das classes Usualmente possuem extensão.hbm.xml Comunidade.hbm.xml

11 © LES/PUC-Rio XML Recomendação da W3C para gerar linguagens de marcação para necessidades especiais –Separação do conteúdo e da formatação –Legibilidade tanto por humanos quanto por máquinas –Possibilidade de criação de tags sem limitação –Criação de arquivos para validação de estrutura –Com seu uso pode-se interligar bancos de dados distintos –Simplicidade Referencias –http://www.w3schools.com/xml/http://www.w3schools.com/xml/ –http://www.w3.org/XML/http://www.w3.org/XML/

12 © LES/PUC-Rio Arquivo de Mapeamento – Ex POJO Declaração de classe usando o elemento class –Indicação do nome da classe –Indicação do nome da Tabela (opcional)

13 © LES/PUC-Rio Mapeamento de Identificadores Indicação da chave primária –nome do atributo –tipo Escolha do gerador da Chave ver classe

14 © LES/PUC-Rio Tipos de Geradores de Chave increment identity sequence hilo seqhilo uuid guid native assigned select foreign

15 © LES/PUC-Rio Mapeamento de Propriedades Elemento property –Indicação de nome e tipo Se não explicitar coluna considera o nome da propriedade ver classe

16 © LES/PUC-Rio Mapeamento de Propriedades Tipos –nomes de tipos básicos do Hibernate (integer, string, character, date, timestamp, float, binary, serializable, object, blob). –nome de tipos básicos Java (int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob, java.util.Calendar). –nome de uma classe Java Serializable. –Se não especificado o Hibernate usa reflexão Outras propriedades –Access (property | field): controla como o Hibernate vai acessar os atributos em tempo de execução (default: property) –column: nome da coluna na tabela do banco (default: nome do atributo) –not-null (true | false): determina se a propriedade pode ser nula (default: false)

17 © LES/PUC-Rio Mapeamento de Relacionamentos one-to-one many-to-one one-to-many many-to-many

18 © LES/PUC-Rio Mapeamento de Relacionamentos - Exemplo Unidirecional one-to-many Bidirecional many-to-many Unidirecional many-to-one

19 © LES/PUC-Rio Mapeamento – many-to-one

20 © LES/PUC-Rio Modelo relacional atores id > nome nascimento comunidades id > nome descricao atorID >

21 © LES/PUC-Rio Mapeamento – one-to-one

22 © LES/PUC-Rio Modelo relacional atores id > nome nascimento cadastros id > username senha

23 © LES/PUC-Rio Mapeamento – uso de Coleções java.util.Set, java.util.Collection, java.util.List, java.util.Map, java.util.SortedSet, java.util.SortedMap...

24 © LES/PUC-Rio Modelo relacional papeis id > nome descricao comunidadeID > comunidades id > nome descricao atorID >

25 © LES/PUC-Rio Mapeamento – List – many-to-many

26 © LES/PUC-Rio Mapeamento – many-to-many

27 © LES/PUC-Rio Modelo relacional atores id > nome nascimento ator_papel atorID > papelID > papeis id > nome descricao comunidadeID >

28 © LES/PUC-Rio Mapeamento - Herança Estratégia de estrutura genérica não utilizada Três estratégias –Tabela por hierarquia –Tabela por subclasse –Tabela por classe concreta Recurso –Polimorfismo implícito

29 © LES/PUC-Rio Tabela por hierarquia Precisa determinar um discriminator

30 © LES/PUC-Rio Modelo relacional Ator id > nome nascimento escola ano ocupacao salario TIPO_DE_ATOR

31 © LES/PUC-Rio Tabela por subclasse

32 © LES/PUC-Rio Modelo relacional Ator id > nome nascimento Trabalhador atorID > ocupacao salario Estudante atorID > escola ano

33 © LES/PUC-Rio Tabela por classe concreta

34 © LES/PUC-Rio Modelo relacional Trabalhador id > nome nascimento ocupacao salario Estudante id > nome nascimento escola ano

35 © LES/PUC-Rio Tabela por classe concreta – polimorfismo implicito

36 © LES/PUC-Rio Configuração hibernate.properties ou hibernate.cfg.xml –Driver, localização do banco, senha, mapeamentos, etc.

37 © LES/PUC-Rio Resultado Um arquivo de mapeamento por classe persistente Um arquivo de configuração

38 © LES/PUC-Rio Arquitetura Detalhada

39 © LES/PUC-Rio Arquitetura Detalhada

40 © LES/PUC-Rio SessionFactory (org.hibernate.SessionFactory) Threadsafe Montada a partir do arquivo de configuração (hibernate.cfg.xml) (hibernate.cfg.xml) Fábrica de Session Geralmente se usa uma por aplicação

41 © LES/PUC-Rio Arquitetura Detalhada

42 © LES/PUC-Rio Session (org.hibernate.Session) Representa a troca de informações entre a aplicação e um esquema de armazenamento de dados Fábrica de transações Wrapper para conexões JDBC Cache de objetos persistentes

43 © LES/PUC-Rio Aplicação Exemplo Uma aplicação onde é possível –Manter atores Cadastrar novos Editar existentes –Manter Comunidades Cadastrar novas Editar existentes Adicionar novos papeis Gerenciar Papeis –Consultar atores –Consultar Comunidades Modelo

44 © LES/PUC-Rio Copiar bibliotecas Copiar as bibliotecas necessárias para o funcionamento do hibernate

45 © LES/PUC-Rio Criando o banco Configuration –Busca o arquivo hibernate.cfg.xml no classpath SchemaExport –Classe usada para criar o esquema do banco de dados É necessário a existência de um banco com o nome especificado na configuraçãoconfiguração

46 © LES/PUC-Rio Trabalhando com classes persistentes SessionFactory Configuration hibernate.cfg.xml cria BANCO Session C1 P1 P2 A1 save delete

47 © LES/PUC-Rio Criando uma Session Criando uma SessionFactory Criando uma Session

48 © LES/PUC-Rio Demarcação de transação Fronteiras de transação são obrigatórias Envolve 4 passos básicos – iniciar transação – dar o commit na transação – tratar erros – fechar sessão

49 © LES/PUC-Rio Tornando um objeto persistente Novas instancia são consideradas transientes Usa-se o comando save para tornar um objeto persistente Ao salvar o seu id é gerado Se o objeto contiver associação com outros objetos é preciso salva-los antes (ou usar cascade)

50 © LES/PUC-Rio Carregando um objeto Pode usar dois comandos –load Lança exceção –Get Retorna nulo

51 © LES/PUC-Rio Consultando objetos HQL –Linguagem de consulta orientada a objeto Criteria –Uma API orientada a objeto para busca SQL

52 © LES/PUC-Rio HQL

53 © LES/PUC-Rio Paginação Usado para determinar fronteiras no resultado Útil para evitar desperdício de memória. Ex.: Google

54 © LES/PUC-Rio Externalizando queries Queries são declaradas nos mapeamentos Não mistura código de consulta com o da aplicação

55 © LES/PUC-Rio Criteria API Mais próximo de desenvolvedores que não conhecem linguagens de consulta

56 © LES/PUC-Rio Alterando objetos persistentes

57 © LES/PUC-Rio Tornando os objetos transientes Remove o objeto do banco Cuidado para não resultar em violação de integridade Exemplo: ao remover um ator seu cadastro deve ser removido também

58 © LES/PUC-Rio Persistência transitiva As operações (save, delete, update) realizadas com o banco podem resultar em perda de integridade O Hibernate possui mecanismos para tratar relações do tipo pai/filho automaticamente Ex.: Ao remover um ator do banco não faz sentido manter o cadastro do ator

59 © LES/PUC-Rio Carga preguiçosa Carga dos objetos é feita apenas quando necessário Evita sobrecarregar a memória com objetos não necessários Hibernate usa proxies das coleções Java Pode ser difícil de se trabalhar (LazyInitializationException)

60 © LES/PUC-Rio Boas práticas e padrões Uso de DAOs (Generic DAOs) Patterns –Session-per-request Uma sessão é aberta no inicio de uma requisição e fechada ao final –Implementada com ServletFilter Anti-patters –Session-per-operation Uma sessão é aberta para cada operação executada

61 © LES/PUC-Rio Exercícios Trabalhar a auto-didática –Referência do Hibernate bastante completa: Suponha uma aplicação para fazer o controle de gastos. Nela seria possível cadastrar entradas de credito ou débito que determinado indivíduo realizou. Cada entrada possui um valor, uma data e uma categoria. Deve ser possível –Registrar categorias –Verificar quanto foi gasto em determinada categoria em determinado intervalo de tempo –Verificar qual foi a percentagem que determinada categoria gastou em determinado intervalo de tempo Não se preocupe com –Interface –Controle de usuários


Carregar ppt "Hibernate Mapeamento O/R. © LES/PUC-Rio Hibernate – O que é? Ferramenta para mapeamento O/R em Java –Uma das mais difundidas Separação entre a aplicação."

Apresentações semelhantes


Anúncios Google