Você está na página 1de 8

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

INTRODUO A JPA ARQUITETURA E CONCEITOS.

A Java Persistence API (JPA) a especificao para persistncia de objetos Java para bancos de dados relacionais usando a popular tecnologia de mapeamento objeto relacional (ORM). Aproveitando JSR 220 (Enterprise JavaBeans ou EJB 3.0), JPA fornece um padro baseado em POJO e ORM para persistncia de dados entre aplicaes Java. JPA baseia-se em idias, conceitos e padres de frameworks de persistncia lderes como TopLink, Hibernate e Java Data Objects (JDO). Um dos grandes benefcios do JPA que uma API independente e pode muito bem integrar-se com Java EE, bem como aplicaes Java SE. JPA usa metadados para mapear objetos de persistncia para tabelas de banco de dados, e suporta uma linguagem de consulta SQL-like para facilitar o processo de consultar o banco de dados. A linguagem de consulta JPA pode ser usada para executar as duas consultas estticas e dinmicas. Vamos apresentar JPA listando seus benefcios e arquitetura e, em seguida, usando uma demonstrao de Entity e persistence.xml para explicar como ele funciona e como implement-lo.

O que so POJOS POJO - Plain Old Java Object um termo usado para se referir objetos Java que no precisam estender ou implementar classes especializadas. Portanto, todos os objetos Java normais so POJO.

Os benefcios da JPA JPA exige menos classes e interfaces do que solues mais velhas, praticamente elimina os descritores de implementao usando anotaes (Annotations). Ele tambm elimina a necessidade de cdigo de pesquisa e utiliza injeo de dependncia. A seguir esto os principais benefcios do JPA. Simplicidade na tecnologia para persistncia; Independncia de frameworks ORM; Apoiado por lderes da indstria; Java fornece uma linguagem de consulta - Um avanado EJB QL.

Tpicos Avanados de Programao - Ano:2011 Arquitetura JPA Entity; EntityManager; EntityManagerFactory.

Prof.Fbio Rener

Entity Entidade o objeto de persistncia (POJO) que representa um registro na tabela de banco de dados. A Entidade uma classe POJO com anotao simples. Aqui esto as caractersticas de uma entidade: Uma entidade pode ser persistida no banco de dados relacional. Uma entidade identificada por uma identidade de persistncia (isto , a chave primria da tabela). Entidade oferece suporte a transaes. Entidade oferece suporte herana.

Tpicos Avanados de Programao - Ano:2011 EntityManager

Prof.Fbio Rener

A interface EntityManager fornece a API para interagir com a Entidades. Algumas das funes fornecidas pelo EntityManager API so: persist - Este mtodo usado para salvar uma nova entidade. merge - Este mtodo usado para atualizar o estado de uma entidade no banco de dados. remove - Este mtodo usado para remover a instncia da entidade.

EntityManagerFactory O EntityManagerFactory usado para criar uma instncia de EntityManager.

Como implementar JPA Vamos examinar como JPA funciona examinando a persistncia de uma entidade em um banco de dados. Precisamos de trs artefatos para implementar o programa JPA: Uma classe de entidade Um arquivo persistence.xml (Persistence Unit) A classe (ou cliente) atravs do qual inserir, atualizar ou encontrar uma entidade.

A tabela a seguir lista o esquema da tabela CLIENTE.

NOME CLIENTE_ID NOME SOBRENOME RUA CIDADE CEP DT_ATUALIZACAO

CHAVE PRIMARIA S

TIPO NUMBER VARCHAR2(50) VARCHAR2(50) VARCHAR2(50) VARCHAR2(50) VARCHAR2(10) TIMESTAMP

NULL? NOT NULL NOT NULL

NOT NULL

Tpicos Avanados de Programao - Ano:2011 Escrevendo um Entity


package br.com.uniban.tap.persistence; import java.io.Serializable; import java.util.Date; import import import import import import javax.persistence.Column; javax.persistence.Entity; javax.persistence.GeneratedValue; javax.persistence.GenerationType; javax.persistence.Id; javax.persistence.Table;

Prof.Fbio Rener

@Entity @Table(name="CLIENTE") public class Cliente implements Serializable { /** * */ private static final long serialVersionUID = 4053745350037973866L; @Id @Column(name = "CLIENTE_ID", nullable = false) @GeneratedValue(strategy = GenerationType.AUTO) private long clienteId; @Column(name = "NOME", nullable = false,length = 50) private String nome; @Column(name = "SOBRENOME", length = 50) private String sobreNome; @Column(name = "RUA", length = 50) private String rua; @Column(name = "CIDADE", length = 50) private String cidade; @Column(name = "CEP",nullable = false) private String cep; @Version @Column(name = "DT_ATUALIZACAO") private Date updatedTime; public long getClienteId() { return clienteId; } public void setClienteId(long clienteId) { this.clienteId = clienteId; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getSobreNome() { return sobreNome; } public void setSobreNome(String sobreNome) {

Tpicos Avanados de Programao - Ano:2011


this.sobreNome = sobreNome; } public String getRua() { return rua; } public void setRua(String rua) { this.rua = rua; } public String getCidade() { return cidade; } public void setCidade(String cidade) { this.cidade = cidade; } public String getCep() { return cep; } public void setCep(String cep) { this.cep = cep; } public Date getUpdatedTime() { return updatedTime; } public void setUpdatedTime(Date updatedTime) { this.updatedTime = updatedTime; } }

Prof.Fbio Rener

As anotaes presentes no exemplo fazem parte do pacote javax.persistence. A tabela abaixo descreve o significado das anotaes.

Annotation @Entity

@Column @Id @Version @GeneratedValue

Descrio Essa anotao significa que uma determinada classe uma classe de entidade. Se o nome da entidade diferente do nome da tabela, ento a anotao @ Table usada. Caso contrrio, no necessria. Essa anotao fornece o nome da coluna na tabela, se for diferente do nome do atributo. Por padro, os dois nomes so considerados o mesmo. Significa a chave primria. Essa anotao significa um campo de verso em uma entidade. JPA usa um campo de verso para detectar modificaes simultneas para um registro armazenado. Essa anotao significa uma estratgia para atribuir um valor nico para os nossos campos de identidade automaticamente. Os tipos de estratgias disponveis so IDENTITY, SEQUENCE, TABLE e AUTO. A estratgia padro AUTO, cuja execuo fica a cargo do fornecedor JPA.

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

Criando e configurando sua unidade de persistncia (persistence.xml) Unidade de persistncia configurado em um arquivo XML colocado na pasta METAINF. Usado para especificar o nome do provedor de persistncia, os nomes das entidades, e propriedades como a URL de conexo do banco de dados, driver, usurio, senha e assim por diante.
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="aula3PU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <class>br.com.uniban.tap.persistence.Cliente</class> <properties> <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/> <property name="hibernate.connection.username" value="root"/> <property name="hibernate.connection.password" value="120789"/> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/uniban"/> <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/> </properties> </persistence-unit> </persistence>

Na prxima aula veremos mais sobre as anotaes que usaremos em nossas entidades e um exemplo de cliente que faz a incluso e consulta no banco de dados.

Tpicos Avanados de Programao - Ano:2011 Exerccios de Fixao:

Prof.Fbio Rener

1) O que significa JPA ?

2) O que um POJO ?

3) Lista dois benefcios que temos ao usar JPA ?

4) Para que serve o EntityManager e quais as principais funes ?

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

5) O que o arquivo persistence.xml

Você também pode gostar