Mapeamento Objeto Relcional Usando JPA 1.0

Mapeamento Objeto Relcional Usando JPA 1.0

(Parte 1 de 3)

Mapeamento Objeto-Relacional Usando JPA 1.0

UnICESP Alessandro Borges

Mapeamento Objeto Relacional

•É uma técnica de mapeamento de dados entre Entidades

Relacionais (Banco de Dados) e Sistemas Orientados a Objetos (Aplicação);

•Os maiores exemplos de sucesso de implementação de ORM são :

– Hibernate

–EJB3 / JPA

–JDO – Java Data Objects*

–DAO – Data Access Object*

Mapeamento Objeto Relacional

•A JPA – Java Persistence API, está se tornando a API de persistência de fato, dada a sua simplicidade e facilidade de automação.

•A JPA tem as seguintes caracteristicas:

–Baseado no Hibernate. Foi concebida pelos criadores e mantenedores do Hibernate, liderados por Gavin King

–Uso de @anotações ao invés de descritores em XML;

–Interfaces definidas no pacote javax.persistence;

–Independência de Banco de Dados (usa JDBC);

–Tem sua própria DML, a Java Persistence Query Language ou JPQL que totalmente orientada a objetos;

–É capaz de executar queries em linguagemSQL nativa. Na prática isso quer dizer que você pode escrever queries usando dialetos SQL do seu BD preferido;

–Usa classes Java POJO, ou seja classes Beans, simplificando o processo de persistencia.

Mapeamento Objeto Relacional

•JPA – O pacote javax.persistence define uma classe concreta :

– javax.persistence.Persistence

•E quatro interfaces: – EntityManagerFactory

– EntityManager

– EntityTransaction

– Query

Mapeamento Objeto Relacional

•Um exemplo de mapeamento típica, usada para mapear um entidade relacional:

Mapeamento Objeto Relacional

@anotações

São metadados inseridos diretamente na classe. As vantagens são: •Dispensam o uso de descritores externos (XML);

•Simplificam o desenvolvimento e deployment;

•Torna a entidade / classe um único e flexível objeto POJO;

As anotações mais usadas são :

Anotações de Classe: •@Entity – informa que a classe é um entidade

•@Table(name=”NomeTabela”) - informa qual tabela esta classe representa;

Anotações de Atributos: •@Id – informa que este atributo é chave primaria

•@Column(name=”NomeColuna”) - informa qual coluna da tabela este atributo representa;

•@OneToMany – informa um relacionamento 1:N

•@ManyToOne – informa umrelacionamento N:1 com outra entidade.

Mapeamento Objeto Relacional

@anotações

Outras anotações: Anotações de Classe:

•@NamedQuery (name=”Cliente.findByEmail”, query=”SELECT c FROM Cliente c WHERE c.email = :email”) – informa uma query JPQL que pode ser referenciada por nome.

•@NamedQueries({namedQuerie1 , namedQuerie2}) - informa uma coleção de NamedQueries JPQL referentes a esta entidade;

Anotações de Atributos:

•@GeneratedValue(strategy=Constante) – Usado em campos de chave primária, para informar a estratégia de geração da chave primária. A estratégia de geração de chaves pode ser :

»GenerationType.IDENTITY – PK é auto incremento

»GenerationType.SEQUENCE – PK é uma Sequence (Oracle)

(Parte 1 de 3)

Comentários