Transcript
  • 1. Programao Orientada a Objetos Estudo de Frameworks(Mapeamento Objeto-Relacional em Java)Objetivo: Identificar os processos de mapeamento Objeto-Relacional Prof. Ncio de Lima Veras

2. ProblemaPOO Programao Orientada a Objetos xBDR Banco de Dados Relacionais =Paradigmas Diferentes 3. Problema Trabalha no mesmo nvel do banco dedados: 4. Soluo Tambm chamado de ORM Object Relational Mapping Resolve o famoso problema dedescompasso de impedncia(impedance mismatch) entre os mundosobjeto e relacional. Pode ser usado para gerar as tabelas nobanco de dados ou atualizar as restriesde integridade. 5. Parte IMapeamento Objeto-Relacional 6. Sim, mas o que MOR? 7. Ou seja... O melhor dos dois mundos: Modelo Orientado a Objetos; Performance e confiabilidade dos bancos dedados relacionais. 8. Quais suas utilidades? O uso de uma soluo de mapeamento objeto-relacional pode solucionar problemas do tipo: Como devem ser as classes persistentes? Como mapear hierarquias e relaes? Como recuperar os dados de associaes de formaeficiente ? Como gerenciar os recursos necessrios: transaes,cache, concorrncia ? 9. Porque utilizar? Vamos alm da padronizao da persistncia.....!? Produtividade Elimina 90% do cdigo SQL da aplicao; Reduz o custo de tratamento de transaes, erros, entreoutros; Manutenibilidade Menos linhas de cdigo == melhor manuteno; Reduo drstica do impacto de mudanas na base de dados; Desempenho Os recursos da soluo de MOR podem melhorar odesempenho das buscas; Sobra tempo para a equipe trabalhar em otimizaes dosistema; S falta agora uma forma padronizada de se fazer essemapeamento; 10. Eis que surge o JPA O que ? uma especificaes da linguagem Java para a persistncia de dados; Atua na camada de persistncia de dados; Define o mapeamento objeto-relacional com base em anotaes; 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; Soluo completa para MOR e persistncia de dados: Modo declarativo de descrever mapeamento O/R; Linguagem de consulta (EJB QL); Ferramentas para manipular entidades. 11. JPA: Caractersticas Portabilidade; Persistncia transparente: No h necessidade de implementao de interfaces especiais ou classes base. Usa POJOs Plain Old Java Objetcs; Atributos so persistidos; No h necessidade de gerao de cdigo; Suporta tipos definidos pelo usurio Controle transparente de restries de integridade; Consulta orientada a objetos ou no: EJB QL; Consultas dinmicas e nomeadas; SQL Nativo; 12. JPA: Instncias Existem algumas implementaes: Toplink (oracle); a implementao de referncia usada pela Sun Mais enxuto e menor que o Hibernate: apenas 2jars so necessrios; Hibernate; GlassFish; Apache OpenJPA; Todos implementam a soluo ORM de acordo com aespecificao JPA; Tm o formato de arquivos *.jar que adicionados aoclassPath da aplicao tornam-se disponveis; 13. Visualizando 14. Hibernate Mais conhecida, mais tradicional. Endereo para Download. http://www.hibernate.org Na pagina de downloads: 15. Hibernate Poderoso framework de mapeamento objeto-relacional (MOR); Framework de Persistncia; Excelente performance; a mais popular ferramenta de MOR daatualidade; Software Livre e Gratuito; Permite o uso de uma grande variedade deSGBDs; 16. Hibernate: Visualizando Ou Anotaes (que BEMmelhor) 17. Hibernate: Propriedades Criando um arquivo de configurao (chamadohibernate.properties):# Configurao Bsicahibernate.connection.driver_class = com.mysql.jdbc.Driverhibernate.connection.url = jdbc:mysql://localhost/dbProvaPOOhibernate.connection.username = roothibernate.connection.password = roothibernate.dialect = org.hibernate.dialect.MySQLDialecthibernate.show_sql = truehibernate.format_sql = truehibernate.pool_size = 10 18. Usando o JPA No esquea de adicionar os JARs aoprojeto; Mapeamento: Classes e interfaces esto no pacote: javax.persistence Uso anotaes @ importante conhecer as anotaes maiscomuns e saber us-las! 19. Anotaes Comuns @Entity @Table Por padro, a JPA assume que todos os campospersistentes de uma entidade seroarmazenados em uma tabela com o mesmonome da entidade. @Table(name="FUN") @Column Por padro, a JPA assume que o nome de cadaatributo corresponde ao mesmo nome na tabela @Column(name="FUN_ID") @Id 20. Anotaes 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. Anotaes Comuns @GeneratedValue gerao automtica de identificadores; @Temporal para informaes relacionadas ao tempo(DATE, TIME e TIMESTAMP) @OneToOne@OneToOne(optional=false)@JoinColumn(name=ADDRESS_ID,unique=true, nullable=false)Query Address getAddress() {... } 22. Anotaes Comuns @OneToMany / @ManyToOne@OneToMany(cascade=CascadeType.ALL,mappedBy=customer)Set getOrders() { ... }@ManyToOne@JoinColumn(name=CUST_ID,nullable=false)Customer getCustomer() { ... } 23. Exerccios iniciais(1)Crie um arquivo bsico de configurao para um banco de dados chamado dbIFPI cujo SGDB MySQL e o usurio de conexo 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 anotaes comuns nos slides anteriores, pesquise outras anotaes existentes e descreva- as.