Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Roteiro Mapeamento Objeto-Relacional JPA Anotações Hibernate Mapeamento Objeto-Relacional Mapeamento objeto-relacional (ORM) é a técnica de mapear dados originalmente armazenados de forma relacional em um modelo de objetos; Neste contexto, busca-se utilizar a eficiência e ampla utilização dos bancos de dados relacionais com a programação orientada a objeto; De outra forma, podemos dizer também que, o mapeamento permite reduzir a impedância da programação orientada a objetos em banco de dados relacionais. Persistência De modo geral, persistência significa continuar a existir, preservar, durar longo tempo ou permanecer. No contexto de programação orientada a objeto, a persistência significa a possibilidade desses objetos serem armazenados em meio externo à aplicação, portanto, deverá permitir que esses objetos não sejam voláteis. Atualmente, os bancos de dados relacionais são o meio mais utilizado para isso, porém não são os únicos. JPA – Java Persistence API Consiste de um conjunto de interfaces e anotações que visam padronizar o acesso aos frameworks de MOR e se baseia nas melhores práticas de tecnologias de persistência como Hibernate, TopLink e JDO; Solução completa para mapeamento e persistência de objetos: modo declarativo de descrever MOR, linguagem de consulta e ferramentas para manipular entidades; A JPA foi introduzida com a plataforma Java EE5; Desenvolvida como parte da JSR-220 - Tecnologia EJB 3.0, a JPA se integra de homogênea e consistente nas APIs EJB 3.0; Provê à comunidade Java uma única API padrão de persistência, com a liberdade de escolha do provedor (implementação); Rapidamente os frameworks se adaptaram para funcionar como provedores JPA, incluindo recursos que permitam utilizar o padrão JPA para a construção de camadas de persistência. JPA – Java Persistence API Arquitetura JPA - Anotações A JPA define um meio de mapeamento Objeto-Relacional para objetos Java simples e comuns (POJOS). “Basicamente, uma anotação é uma maneira de acrescentar informações sobre uma parte do código (no mundo Java, geralmente uma classe, um campo ou método) para ajudar as ferramentas entenderem como o código está sendo utilizado ou para permitir a automatização, poupando trabalho”. (Elliott, 2009) JPA - Anotações Anotações utilizando JPA JPA - Anotações Anotações utilizando JPA (continuação) JPA - Anotações Anotações – Mapeamento de Associações JPA - Anotações Anotações – Mapeamento de Associações (continuação) JPA - Anotações Anotações – Mapeamento de Associações JPA - Anotações Anotações – Mapeamento de Associações (continuação) JPA - Anotações Anotações – Mapeamento de Herança JPA - Anotações Anotações – Mapeamento de Herança JPA - Anotações Exemplo simples de mapeamento @Entity anotação associa classes Java. Determina que a classe é persistente. @Id toda classe precisa ter um identificador, que será associado a chave primária da tabela no banco de dados. Atributos anotados com @Id serão identificadores, tanto para as instâncias de objetos da classe que está sendo mapeada como para os registros da respectiva tabela no banco de dados. JPA - Anotações Exemplo simples de mapeamento @Table define o nome da tabela no banco de dados @SequenceGenerator mapeia uma seqüência do BD @GeneratedValue permite gerar o código usando a seqüência mapeada. JPA - Anotações Exemplo simples de mapeamento Gerar o Id com uso da função de agregação MAX(). Observe que @GenericGenerator é uma anotação específica do Hibernate. JPA - Anotações Exemplo simples de mapeamento @Column por padrão, a JPA assume que o nome de cada atributo corresponde ao mesmo nome na tabela. Para modificar o mapeamento para uma coluna com o nome diferente do atributo, deve-se utilizar o atributo name, conforme acima. JPA - Anotações Exemplo simples de mapeamento Outros atributos para a anotação @Column podem ser adicionados, como os seguintes: name (String: nome do campo na tabela) nullable (boolean) length (int) Scale (int) unique (boolean) JPA - Anotações Exemplo simples de mapeamento @Temporal para informações relacionadas ao tempo (DATE, TIME e TIMESTAMP) JPA - Anotações Exemplo simples de mapeamento As quatro anotações apresentadas a seguir podem ser usadas para mapear associações: @OneToOne @OneToMany @ManyToOne @ManyToMany Em muitos casos, colocar a anotação no atributo da associação é o suficiente. Em alguns casos, é necessário definir alguns parâmetros para as anotações. JPA - Anotações Para uma associação do tipo N para 1 ou N:1 JPA - Anotações Para uma associação do tipo N para 1 ou N:1 @JoinColumn permite definir o nome da coluna que será utilizada na tabela do BD para estabelecer a associação. JPA - Anotações Para uma associação do tipo 1 para 1 ou 1:1 Usando a chave primária compartilhada JPA - Anotações Para uma associação do tipo 1 para 1 ou 1:1 Usando a chave primária diferente JPA - Anotações Para uma associação do tipo N para M ou N:M @ManyToMany é usada em conjunto com a anotação @JoinTable é opcional e permite definir uma tabela associativa no BD. Tabelas associativas são utilizadas em SGBDs relacionais para implementar uma associação muitos para muitos. muitos para muitos. Propriedades joinColumns: Colunas que identificam a chave da entidade inverseJoinColumns: Colunas que identificam a chave da entidade de destino / target entity JPA - Anotações Para uma associação do tipo N para M ou N:M JPA - Anotações Estratégias para Mapeamento de Herança Podemos, ainda, dividir em: uma tabela por classe, todas as classe em uma tabela e uma tabela para cada subclasse JPA - Anotações Mapeamento para uma chave composta Hibernate O Hibernate é um framework para o Mapeamento Objeto-Relacional (ORM) escrito na linguagem Java, mas também está disponível em .Net como o nome Nhibernate; O principal objetivo do Hibernate é diminuir a complexidade entre os programas Java, baseado no modelo orientado a objeto, que precisam trabalhar com um banco de dados do modelo relacional (presente na maioria dos SGDBs); Sua principal característica é a transformação das classes em Java para tabelas de dados e dos tipos de dados Java para os da linguagem SQL. Hibernate Permite uma persistência transparente para o desenvolvimento das aplicações; Facilita o mapeamento dos atributos entre uma base de dados relacionais e o modelo de objetos de uma aplicação; Usa arquivos XML ou Anotações na próprias classes para estabelecer esta relação; Está na terceira versão (consolidado); É um software livre de código aberto distribuído coma licença LGPL. Hibernate O Hibernate define estes três tipos de estados: persistentes, transientes e detached. Objetos com esses estados são definidos como a seguir: Objetos Transientes: são objetos que suas instâncias não estão nem estiveram associados a algum contexto persistente. Eles são instanciados, utilizados e após a sua destruição não podem ser reconstruídos automaticamente; Objetos Persistentes: são objetos que suas instâncias estão associadas a um contexto persistente, ou seja, tem uma identidade de banco de dados. Objetos detached: são objetos que tiveram suas instâncias associadas a um contexto persistente, mas que por algum motivo deixaram de ser associadas, por exemplo, por fechamento de sessão, finalização de sessão. São objetos em um estado intermediário, nem são transientes nem persistentes. Hibernate Arquitetura Camada de manipulação dos objetos Camada de conexão do SGBD Hands On Baixar o Hibernate Core http://www.hibernate.org/downloads.html Necessários Gramática linguagem Biblioteca geração de código Estrutura de dados Framework XML Framework Hibernate Assistente Java Transação Logs Hands On Configuração da persistence.xml Ao criar um projeto, certifique-se que o arquivo persistence.xml esteja no diretório src/META-INF. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Compartilhar