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

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

Java Persistence Architecture

Apresentações semelhantes


Apresentação em tema: "Java Persistence Architecture"— Transcrição da apresentação:

1 Java Persistence Architecture
Julio M. Faerman

2 Mapeamento Objeto-Relacional
Java Persistence Architecture Mapeamento O-R Plain Old Java Object Mapeamento Objeto-Relacional SGBDR Convenções Anotações XML

3 Java Persistence Architecture
XML Anotações Convenções Object JPA javax.persistence MySQL Hibernate, Toplink, OpenJPA, EclipseLink Convenções Anotações XML

4 Java Persistence Architecture
Artefato JPA Hibernate Configuração persistence.xml hibernate.cfg.xml Hibernate.properties Mapeamento Annotations @javax.persistence @org.hibernate.annotations Mapeamento XML orm.xml .hbm.xml Queries JPQL HQL

5 Java Persistence Architecture
API

6 Ciclo de vida de entidades
Java Persistence Architecture Ciclo de vida de entidades Estado Contexto Persistente ID Exemplo Novo (new) Não ent = new Entidade(); Gerenciado (managed) Sim em.persist(ent); Desvinculado (detached) em.close(); Removido (removed) em.remove(ent);

7 Ciclo de vida de entidades
Java Persistence Architecture Ciclo de vida de entidades

8 Java Persistence Architecture
META-INF/persistence.xml

9 Entidades @Entity Construtor sem argumentos public ou protected
Java Persistence Architecture Entidades @Entity Construtor sem argumentos public ou protected Não final Serializable*

10 Chaves Primárias @Id @GeneratedValue @SequenceGenerator
Java Persistence Architecture Chaves Primárias @Id @GeneratedValue GenerationType.IDENTITY GenerationType.SEQUENCE GenerationType.TABLE GenerationType.AUTO @SequenceGenerator

11 PKs Compostas @EmbeddedID @IdClass Java Persistence Architecture
@Embeddable class PkEntidade{ long pk1; long pk2; } @Entity Class Entidade{ @EmbeddedId PkEntidade id; @IdClass class PkEntidade{ long pk1; long pk2; } @Entity @IdClass(PkEntidade.class) Class Entidade{ @Id pk1; @Id pk2;

12 Propriedades Primitivos e Wrappers Numericos Temporais Enumerados
Java Persistence Architecture Propriedades Primitivos e Wrappers Numericos @Column(scale = 4, precision = 15) Temporais @Temporal(TemporalType.TIMESTAMP) Enumerados @Enumerated(EnumType.STRING) @Transient / transient

13 Java Persistence Architecture
Hello World JPA

14 Relacionamentos @OneToOne
Java Persistence Architecture Pessoa Passaporte pessoa.getPassaporte(); Pessoa Passaporte passaporte.getPessoa(); Pessoa Passaporte passaporte.getPessoa(); pessoa.getPassaporte(); @OneToOne Dono (owner) da associação Tabela que vai ter a FK @OneToOne(mappedBy=“passaporte”)

15 @OneToMany / @ManyToOne
Java Persistence Architecture @OneToMany @ManyToOne Departamento dpt = pessoa.getDepartamento(); @OneToMany List<Peca> peacas = carro.getPecas(); @OneToMany( cascade=CascadeType.ALL) O lado many sempre é owner e não declara mappedBy.

16 Relacionamentos @ManyToMany
Java Persistence Architecture Escola Predio N N Set<Escola> escolas = predio.getEscolas(); Set<Predio> predios = escola.getPredios(); - Qualquer lado pode ser owner

17 Herança Java Persistence Architecture @Inheritance(
strategy=InheritanceType.SINGLE_TABLE) Pessoa ID DTYPE Nome Cpf CNPJ @Inheritance( strategy=InheritanceType.JOINED) Pessoa ID DTYPE Nome PessoaFisica ID CPF PessoaJuridica ID CNPJ @Inheritance( strategy=InheritanceType.TABLE_PER_CLASS) PessoaFisica ID Nome CPF PessoaJuridica ID Nome CNPJ

18 Controle do esquema do banco
Java Persistence Architecture Controle do esquema do banco @Table @SecondaryTables @Column @JoinTable @JoinColumn @UniqueConstraint

19 Consultas JPQL SELECT UPDATE DELETE
Java Persistence Architecture Consultas JPQL SELECT select p from PessoaFisica as p where p.passaporte.numero = :numero UPDATE update Filial f set f.status = ’especial' where f.vendas > DELETE delete from filial f where f.vendas = 0 AND f.funcionarios IS EMPTY

20 Consultas Nomeadas Java Persistence Architecture
@Entity pf from PessoaFisica query="select p from PessoaFisica p where p.passaporte.numero = :numero")}) public class PessoaFisica extends Pessoa {… Query query = em.createNamedQuery("pf.porPassaporte"); query.setParameter("numero", "123456"); PessoaFisica p = (PessoaFisica) query.getSingleResult();

21 Consultas Nativas (SQL)
Java Persistence Architecture Consultas Nativas (SQL) @SqlResultSetMapping( name="OrderResults", entityClass=Order.class, column="order_item") } ), column="item_name"), })}) @Entity public class Order { @Id protected int id; protected long quantity; @ManyToOne protected Item item; ... } .. em.createNativeQuery( “select * from Order”,”OrderResults”);

22 orm.xml (JSR 220, chap. 10) Java Persistence Architecture
<?xml version="1.0" encoding="UTF-8" ?> <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm version="1.0"> <description>JPOX JPA tutorial</description> <package>org.jpox.tutorial.jpa</package> <entity class="org.jpox.samples.metadata.store.Product" name="Product"> <table name="JPA_PRODUCTS"/> <attributes> <id name="id"> <generated-value strategy="TABLE"/> </id> <basic name="name"> <column name="PRODUCT_NAME" length="100"/> </basic> <basic name="description"> <column length="255"/> </attributes> </entity> </entity-mappings>

23 hbm.xml Java Persistence Architecture
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="events.Event" table="EVENTS"> <id name="id" column="EVENT_ID"> <generator class="native"/> </id> <property name="date" type="timestamp" column="EVENT_DATE"/> <property name="title"/> </class> </hibernate-mapping>

24 Persistencia completa usando JPA
Java Persistence Architecture Persistencia completa usando JPA

25 Java Persistence Architecture
Dúvidas ?


Carregar ppt "Java Persistence Architecture"

Apresentações semelhantes


Anúncios Google