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

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

Java Persistence Architecture Julio M. Faerman. Mapeamento O-R Java Persistence Architecture # 2 P lain O ld J ava O bject P lain O ld J ava O bject Mapeamento.

Apresentações semelhantes


Apresentação em tema: "Java Persistence Architecture Julio M. Faerman. Mapeamento O-R Java Persistence Architecture # 2 P lain O ld J ava O bject P lain O ld J ava O bject Mapeamento."— Transcrição da apresentação:

1 Java Persistence Architecture Julio M. Faerman

2 Mapeamento O-R Java Persistence Architecture # 2 P lain O ld J ava O bject P lain O ld J ava O bject Mapeamento Objeto- Relacional SGBDR Anotações XML Convenções

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

4 Java Persistence Architecture # 4 ArtefatoJPAHibernate Configuraçãopersistence.xmlhibernate.cfg.xml Hibernate.properties Mapeamento Annotations @javax.persistence@org.hibernate.annotations Mapeamento XMLorm.xml.hbm.xml QueriesJPQLHQL

5 API Java Persistence Architecture # 5

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

7 Ciclo de vida de entidades Java Persistence Architecture # 7

8 META-INF/persistence.xml Java Persistence Architecture # 8

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

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

11 PKs Compostas @EmbeddedID @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; } Java Persistence Architecture # 11

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

13 Hello World JPA Java Persistence Architecture # 13

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

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

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

17 Herança Java Persistence Architecture # 17 @Inheritance( strategy=InheritanceType.SINGLE_TABLE) @Inheritance( strategy=InheritanceType.JOINED) @Inheritance( strategy=InheritanceType.TABLE_PER_CLASS) Pessoa IDDTYPENomeCpfCNPJ Pessoa IDDTYPENome PessoaFisica IDNomeCPF PessoaFisica IDCPF PessoaJuridica IDCNPJ PessoaJuridica IDNomeCNPJ

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

19 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 > 1000000 DELETE delete from filial f where f.vendas = 0 AND f.funcionarios IS EMPTY Java Persistence Architecture # 19

20 Consultas Nomeadas Java Persistence Architecture # 20 @Entity @NamedQueries({ @NamedQuery(name="pf.todas",query="select pf from PessoaFisica pf"), @NamedQuery(name="pf.porPassaporte", query="select p from PessoaFisica p where p.passaporte.numero = :numero")}) public class PessoaFisica extends Pessoa {… @Entity @NamedQueries({ @NamedQuery(name="pf.todas",query="select pf from PessoaFisica pf"), @NamedQuery(name="pf.porPassaporte", 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(); Query query = em.createNamedQuery("pf.porPassaporte"); query.setParameter("numero", "123456"); PessoaFisica p = (PessoaFisica) query.getSingleResult();

21 Consultas Nativas (SQL) @SqlResultSetMapping( name="OrderResults", entities={ @EntityResult( entityClass=Order.class, fields={ @FieldResult(name="id", column="order_id"), @FieldResult(name="quantity", column="order_quantity"), @FieldResult(name="item", column="order_item") } ), @EntityResult( entityClass=Item.class, fields={ @FieldResult(name="id", column="item_id"), @FieldResult(name="name", column="item_name"), })}) Java Persistence Architecture # 21 @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) JPOX JPA tutorial org.jpox.tutorial.jpa Java Persistence Architecture # 22

23 hbm.xml Java Persistence Architecture # 23 http://www.hibernate.org/hib_docs/reference/en/html/

24 Persistencia completa usando JPA Java Persistence Architecture # 24

25 Java Persistence Architecture # 25 Dúvidas ?


Carregar ppt "Java Persistence Architecture Julio M. Faerman. Mapeamento O-R Java Persistence Architecture # 2 P lain O ld J ava O bject P lain O ld J ava O bject Mapeamento."

Apresentações semelhantes


Anúncios Google