Processos iniciais do mapeamento OR

735 views
615 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
735
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
31
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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.

×