Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Processos iniciais do mapeamento OR

867 views

Published on

  • Be the first to comment

Processos iniciais do mapeamento OR

  1. 1. Programação Orientada a Objetos Estudo de Frameworks(Mapeamento Objeto-Relacional em Java) Objetivo: Identificar os processos de mapeamento Objeto-Relacional Prof. Nécio de Lima Veras
  2. 2. ProblemaPOO – Programação Orientada a Objetos x BDR – Banco de Dados Relacionais = Paradigmas Diferentes
  3. 3. Problema• Trabalha no mesmo nível do banco de dados:
  4. 4. Solução• Também chamado de ORM – Object Relational Mapping• Resolve o famoso problema de “descompasso de impedância” (impedance mismatch) entre os mundos objeto e relacional.• Pode ser usado para gerar as tabelas no banco de dados ou atualizar as restrições de integridade.
  5. 5. Parte IMapeamento Objeto-Relacional
  6. 6. Sim, mas o que é MOR?
  7. 7. Ou seja...• O melhor dos dois mundos: – Modelo Orientado a Objetos; – Performance e confiabilidade dos bancos de dados relacionais.
  8. 8. Quais suas utilidades?• O uso de uma solução de mapeamento objeto- relacional pode solucionar problemas do tipo: – Como devem ser as classes persistentes? – Como mapear hierarquias e relações? – Como recuperar os dados de associações de forma eficiente ? – Como gerenciar os recursos necessários: transações, cache, concorrência ?
  9. 9. Porque utilizar?• Vamos além da padronização da persistência.....!? – Produtividade • Elimina “90%” do código SQL da aplicação; • Reduz o custo de tratamento de transações, erros, entre outros; – Manutenibilidade • Menos linhas de código == melhor manutenção; • Redução drástica do impacto de mudanças na base de dados; – Desempenho • Os recursos da solução de MOR podem melhorar o desempenho das buscas; • Sobra tempo para a equipe trabalhar em otimizações do sistema;• Só falta agora uma forma padronizada de se fazer esse mapeamento;
  10. 10. Eis que surge o JPA• O que é? – É uma especificações da linguagem Java para a persistência de dados; – Atua na camada de persistência de dados; – Define o mapeamento objeto-relacional com base em anotações;• Especificada pela JSR-220 (Java Specification Requests) – Mesma que especificou o EJB 3.0 (Enterprise JavaBeans 3.0); – Padroniza o mapeamento Objeto-Relacional em Java;• Solução completa para MOR e persistência de dados: – Modo declarativo de descrever mapeamento O/R; – Linguagem de consulta (EJB QL); – Ferramentas para manipular entidades.
  11. 11. JPA: Características• Portabilidade;• Persistência transparente: – Não há necessidade de implementação de interfaces especiais ou classes base. Usa POJOs – Plain Old Java Objetcs; – Atributos são persistidos; – Não há necessidade de geração de código; – Suporta tipos definidos pelo usuário – Controle transparente de restrições de integridade;• Consulta orientada a objetos ou não: – EJB QL; – Consultas dinâmicas e nomeadas; – SQL Nativo;
  12. 12. JPA: Instâncias• Existem algumas implementações: – Toplink (oracle); • É a implementação de referência usada pela Sun • Mais enxuto e menor que o Hibernate: apenas 2 jars são necessários; – Hibernate; – GlassFish; – Apache OpenJPA;• Todos implementam a solução ORM de acordo com a especificação JPA;• Têm o formato de arquivos *.jar que adicionados ao classPath da aplicação tornam-se disponíveis;
  13. 13. Visualizando
  14. 14. Hibernate● Mais conhecida, mais tradicional.● Endereço para Download. ● http://www.hibernate.org● Na pagina de downloads:
  15. 15. Hibernate• Poderoso framework de mapeamento objeto- relacional (MOR);• Framework de Persistência;• Excelente performance;• É a mais popular ferramenta de MOR da atualidade;• Software Livre e Gratuito;• Permite o uso de uma grande variedade de SGBDs;
  16. 16. Hibernate: Visualizando Ou Anotações (que é BEM melhor)
  17. 17. Hibernate: Propriedades• Criando um arquivo de configuração (chamado hibernate.properties): # Configuração Básica hibernate.connection.driver_class = com.mysql.jdbc.Driver hibernate.connection.url = jdbc:mysql://localhost/dbProvaPOO hibernate.connection.username = root hibernate.connection.password = root hibernate.dialect = org.hibernate.dialect.MySQLDialect hibernate.show_sql = true hibernate.format_sql = true hibernate.pool_size = 10
  18. 18. Usando o JPA• Não esqueça de adicionar os JARs ao projeto;• Mapeamento: – Classes e interfaces estão no pacote: • javax.persistence – Uso anotações – @• É importante conhecer as anotações mais comuns e saber usá-las!
  19. 19. Anotações Comuns• @Entity• @Table – Por padrão, a JPA assume que todos os campos persistentes de uma entidade serão armazenados em uma tabela com o mesmo nome da entidade. – @Table(name="FUN")• @Column – Por padrão, a JPA assume que o nome de cada atributo corresponde ao mesmo nome na tabela – @Column(name="FUN_ID")• @Id
  20. 20. Anotações comuns• @NamedQuery – cria consulta nomeada; – Associada com o @Entity:@Entity@NamedQuery(name = "ConsultaPorId", query ="SELECT f FROM Funcionarios f WHERE f.id =:id")public class Funcionario implements Serializable{ ...}
  21. 21. Anotações Comuns• @GeneratedValue – geração automática de identificadores;• @Temporal – para informações relacionadas ao tempo (DATE, TIME e TIMESTAMP)• @OneToOne@OneToOne(optional=false)@JoinColumn(name=“ADDRESS_ID”,unique=true, nullable=false)Query Address getAddress() {... }
  22. 22. Anotações Comuns• @OneToMany / @ManyToOne@OneToMany(cascade=CascadeType.ALL,mappedBy=“customer”)Set<Order> getOrders() { ... }@ManyToOne@JoinColumn(name=“CUST_ID”,nullable=false)Customer getCustomer() { ... }
  23. 23. Exercícios iniciais(1)Crie um arquivo básico de configuração para um banco de dados chamado dbIFPI cujo SGDB é MySQL e o usuário de conexão seja ifpi com a senha i@fpi;(2)Diferencie JPA de Hibernate;(3)Pesquise e descreva os frameworks Hibernate, TopLink e OpenJPA;(4)Dadas as anotações comuns nos slides anteriores, pesquise outras anotações existentes e descreva- as.

×