1 / 19

JPA

Marco Antonio Software Architect Agosto - 2008. JPA. Java Persistence API. Framework utilizado na camada de persistência para o desenvolvedor ter mais produtividade.

devika
Download Presentation

JPA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Marco Antonio Software Architect Agosto - 2008 JPA

  2. Java Persistence API Framework utilizado na camada de persistência para o desenvolvedor ter mais produtividade. JPA define um caminho para mapear POJO’s para um banco de dados. POJO’s são chamados beans de entidade, pois têm uma tabela correspondente no BD.

  3. Bibliotecas Ao lado você pode conferir as lib’s necessárias para utilizar o JPA

  4. hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.driver_class">org.postgresql.Driver</property> <property name="connection.url">jdbc:postgresql://localhost:5432/SCA</property> <property name="connection.username">postgres</property> <property name="connection.password">postgres</property> <property name="show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.cglib.use_reflection_optimizer" /> </session-factory> </hibernate-configuration>

  5. hibernate.cfg.xml Essa nova versão do arquivo de configuração elimina a necessidade do hibernate.properties. Todas as propriedades de conexão devem ficar aqui. Deve estar no diretório META-INF

  6. EmpresaAerea package net.sca.entidades; import javax.persistence.*; /** * Essa classe representa uma Empresa Aérea no Domínio * Sistema de Controle Aéreo * @category A categoria dessa classe é domínio * @author T313120 * */ @Entity publicclass EmpresaAerea { private Long id; private String nomeFantasia; private String razaoSocial;

  7. EmpresaAerea @Id @GeneratedValue(strategy = GenerationType.AUTO)‏ public Long getId() { return id; } publicvoid setId(Long id) { this.id = id; } @Column public String getNomeFantasia() { return nomeFantasia; }

  8. EmpresaAerea publicvoid setNomeFantasia(String nomeFantasia) { this.nomeFantasia = nomeFantasia; } @Column public String getRazaoSocial() { return razaoSocial; } publicvoid setRazaoSocial(String razaoSocial) { this.razaoSocial = razaoSocial; } }

  9. persistence.xml <?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/per...0.xsd"> <persistence-unit name="sca-pu" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.ejb.cfgfile“ value="/META-INF/hibernate.cfg.xml" /> </properties> </persistence-unit> </persistence>

  10. persistence.xml Esse arquivo fica no diretório src/META-INF. Estamos configurando o JPA para trabalhar com o hibernate.

  11. Classes genéricas DAO que realiza diversas tarefas da persistência. A principal vantagem é que diminui sensivelmente a quantidade de código dos DAO’s específicos. Com a utilização de genéricos, conseguimos especializar com eficiência todos os DAO’s do sistema.

  12. DAOGenericoJPA package net.sca.persistencia; import java.lang.reflect.*; import java.util.*; import javax.persistence.*; publicclass DAOGenericoJPA<T> { private EntityManager em; private EntityManagerFactory emf; public DAOGenericoJPA() { emf = Persistence.createEntityManagerFactory("sca-pu", new HashMap()); em = emf.createEntityManager(); } @SuppressWarnings("unchecked")‏ protected Class<T> getClasse() { Class<T> classe = null; ParameterizedType pt = (ParameterizedType) ((Class<?>) getClass())‏ .getGenericSuperclass(); classe = (Class<T>) pt.getActualTypeArguments()[0]; return classe; }

  13. DAOGenericoJPA publicvoid inserir(T objeto) { em.getTransaction().begin(); em.persist(objeto); em.getTransaction().commit(); } publicvoid atualizar(T objeto) { em.getTransaction().begin(); em.persist(objeto); em.getTransaction().commit(); } public T consultarPeloId(Long id) { return em.find(getClasse(), id); }

  14. DAOGenericoJPA public List<T> consultarTodos() { String sql = "SELECT C FROM " + getClasse().getName() + " C "; return em.createQuery(sql).getResultList(); } //A classe de entidade deve ter o findAll public List consultarTodosNamedQuery() { return em.createNamedQuery("findAll").getResultList(); } publicvoid excluir(T objeto) { em.getTransaction().begin(); em.remove(objeto); em.getTransaction().commit(); } }

  15. DAOEmpresaAerea package net.sca.persistencia; import net.sca.entidades.*; publicclass DAOEmpresaAerea extends DAOGenericoJPA<EmpresaAerea> { }

  16. TesteInsert package net.sca.entidades.teste; import net.sca.entidades.*; import net.sca.persistencia.*; public class TesteInsertEmpresa { public static void main(String[] args) { EmpresaAerea e = new EmpresaAerea(); DAOEmpresaAerea dao = new DAOEmpresaAerea(); e.setNomeFantasia("TAM"); e.setRazaoSocial("Transporte Aereo Marilia"); dao.inserir(e); } }

  17. TesteLoad package net.sca.entidades.teste; import java.util.*; import net.sca.entidades.*; import net.sca.persistencia.*; public class TesteLoad { public static void main(String[] args) { DAOEmpresaAerea d = new DAOEmpresaAerea(); List<EmpresaAerea> lista = d.consultarTodos(); for (EmpresaAerea ea : lista) { System.out.println(ea.getId()); System.out.println(ea.getNomeFantasia()); } } }

  18. Aeronave package net.sca.entidades; import javax.persistence.*; @Entity publicclass Aeronave { private Long id; private EmpresaAerea empresaAerea; private String modelo; private Integer quantidadeDeAssentos; @ManyToOne public EmpresaAerea getEmpresaAerea() { return empresaAerea; } publicvoid setEmpresaAerea(EmpresaAerea empresaAerea) { this.empresaAerea = empresaAerea; }

  19. Aeronave @Column public String getModelo() { return modelo; } publicvoid setModelo(String modelo) { this.modelo = modelo; } @Column public Integer getQuantidadeDeAssentos() { return quantidadeDeAssentos; } publicvoid setQuantidadeDeAssentos(Integer quantidadeDeAssentos) { this.quantidadeDeAssentos = quantidadeDeAssentos; } @Id @GeneratedValue(strategy=GenerationType.AUTO)‏ public Long getId() { return id; } publicvoid setId(Long id) { this.id = id; } }

More Related