SlideShare ist ein Scribd-Unternehmen logo
1 von 23
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
Problema


POO – Programação Orientada a Objetos
                 x
  BDR – Banco de Dados Relacionais
                 =
        Paradigmas Diferentes
Problema

• Trabalha no mesmo nível do banco de
  dados:
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.
Parte I
Mapeamento Objeto-Relacional
Sim, mas o que é MOR?
Ou seja...
• O melhor dos dois mundos:
  – Modelo Orientado a Objetos;
  – Performance e confiabilidade dos bancos de
    dados relacionais.
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 ?
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;
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.
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;
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;
Visualizando
Hibernate

●   Mais conhecida, mais tradicional.
●   Endereço para Download.
    ●   http://www.hibernate.org
●   Na pagina de downloads:
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;
Hibernate: Visualizando

                     Ou
             Anotações (que é BEM
                    melhor)
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
Usando o JPA

• Não esqueça de adicionar os JAR's 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!
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
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
{
   ...
}
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() {... }
Anotações Comuns

• @OneToMany / @ManyToOne

@OneToMany(cascade=CascadeType.ALL,mapp
edBy=“customer”)

Set<Order> getOrders() { ... }

@ManyToOne
@JoinColumn(name=“CUST_ID”,
nullable=false)
Customer getCustomer() { ... }
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012Frederico Maia Arantes
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Elvis Rocha
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simplesLukinha92
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/Rodrigo Vieira
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de ArquivosArthur Emanuel
 
Mapeamento Objeto-Relacional com Java Persistence API
Mapeamento Objeto-Relacional com Java Persistence APIMapeamento Objeto-Relacional com Java Persistence API
Mapeamento Objeto-Relacional com Java Persistence APIbrunoleitealves
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQLDiogo Biazus
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 

Was ist angesagt? (20)

Boas práticas com jpa 2 e hibernate flisol 2012
Boas práticas com jpa 2 e hibernate   flisol 2012Boas práticas com jpa 2 e hibernate   flisol 2012
Boas práticas com jpa 2 e hibernate flisol 2012
 
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
Java EE 6 JPA 2.0, EJB 3.1 e CDI 1.0
 
Migrando para o PHP 5
Migrando para o PHP 5Migrando para o PHP 5
Migrando para o PHP 5
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples
 
Tag Libraries e JSTL
Tag Libraries e JSTLTag Libraries e JSTL
Tag Libraries e JSTL
 
v
vv
v
 
Minicurso jpa e hibernate
Minicurso jpa e hibernateMinicurso jpa e hibernate
Minicurso jpa e hibernate
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Java 02
Java 02Java 02
Java 02
 
Weka básico
Weka básicoWeka básico
Weka básico
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
 
Mapeamento Objeto-Relacional com Java Persistence API
Mapeamento Objeto-Relacional com Java Persistence APIMapeamento Objeto-Relacional com Java Persistence API
Mapeamento Objeto-Relacional com Java Persistence API
 
Jpa, hibernate and jpql
Jpa, hibernate and jpqlJpa, hibernate and jpql
Jpa, hibernate and jpql
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Psi m14
Psi m14Psi m14
Psi m14
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 

Andere mochten auch

Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesNécio de Lima Veras
 
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...Michel Souza
 
Workshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasWorkshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasKarine Drumond
 
Sistema de gestão de restaurantes self service - ultima versão 3
Sistema de gestão de restaurantes self   service - ultima versão 3Sistema de gestão de restaurantes self   service - ultima versão 3
Sistema de gestão de restaurantes self service - ultima versão 3brunogea
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Restaurante
RestauranteRestaurante
Restaurantemarcuzu
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00Anderson Favaro
 

Andere mochten auch (13)

Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
 
Hibernate
HibernateHibernate
Hibernate
 
Apresentação mapeamento objeto relacional
Apresentação mapeamento objeto relacionalApresentação mapeamento objeto relacional
Apresentação mapeamento objeto relacional
 
Hibernate
HibernateHibernate
Hibernate
 
Workshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasWorkshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéias
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
Sistema de gestão de restaurantes self service - ultima versão 3
Sistema de gestão de restaurantes self   service - ultima versão 3Sistema de gestão de restaurantes self   service - ultima versão 3
Sistema de gestão de restaurantes self service - ultima versão 3
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Restaurante
RestauranteRestaurante
Restaurante
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00Sistemas Operacionais 2 -aula00
Sistemas Operacionais 2 -aula00
 

Ähnlich wie Processos iniciais do mapeamento OR

Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objetoelliando dias
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Estudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasEstudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasHelio Henrique L. C. Monte-Alto
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos Raquel Machado
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para phpFabio B. Silva
 
Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosGlaucio Scheibel
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0Edgar Silva
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 

Ähnlich wie Processos iniciais do mapeamento OR (20)

Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Hibernate
HibernateHibernate
Hibernate
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objeto
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Estudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologiasEstudo de técnicas de persistência e acesso concorrente a ontologias
Estudo de técnicas de persistência e acesso concorrente a ontologias
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos
 
Treinamento ORM .Net
Treinamento ORM .NetTreinamento ORM .Net
Treinamento ORM .Net
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Bancos de Dados Orientados a Objetos
Bancos de Dados Orientados a ObjetosBancos de Dados Orientados a Objetos
Bancos de Dados Orientados a Objetos
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0Java EE 6 e JBoss 6.0
Java EE 6 e JBoss 6.0
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
ORM e EF
ORM e EFORM e EF
ORM e EF
 

Mehr von Nécio de Lima Veras

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Nécio de Lima Veras
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoNécio de Lima Veras
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesNécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsNécio de Lima Veras
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionaisNécio de Lima Veras
 
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Nécio de Lima Veras
 
Conceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeConceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeNécio de Lima Veras
 

Mehr von Nécio de Lima Veras (20)

Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Java swing
Java swingJava swing
Java swing
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionais
 
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de software
 
Internet: conceitos e segurança
Internet: conceitos e segurançaInternet: conceitos e segurança
Internet: conceitos e segurança
 
Conceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidadeConceitos básicos de usabilidade e acessibilidade
Conceitos básicos de usabilidade e acessibilidade
 

Processos iniciais do mapeamento OR

  • 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. Problema POO – Programação Orientada a Objetos x BDR – Banco de Dados Relacionais = Paradigmas Diferentes
  • 3. Problema • Trabalha no mesmo nível do banco de dados:
  • 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.
  • 6. Sim, mas o que é MOR?
  • 7. Ou seja... • O melhor dos dois mundos: – Modelo Orientado a Objetos; – Performance e confiabilidade dos bancos de dados relacionais.
  • 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. 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. 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. 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. 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;
  • 14. Hibernate ● Mais conhecida, mais tradicional. ● Endereço para Download. ● http://www.hibernate.org ● Na pagina de downloads:
  • 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. Hibernate: Visualizando Ou Anotações (que é BEM melhor)
  • 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. Usando o JPA • Não esqueça de adicionar os JAR's 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. 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. 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. 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. Anotações Comuns • @OneToMany / @ManyToOne @OneToMany(cascade=CascadeType.ALL,mapp edBy=“customer”) Set<Order> getOrders() { ... } @ManyToOne @JoinColumn(name=“CUST_ID”, nullable=false) Customer getCustomer() { ... }
  • 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.