Mapeamento Objeto Relacional em PHP com Outlet ORM

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Event

    Mapeamento Objeto Relacional em PHP com Outlet ORM - Presentation Transcript

    1. MAPEAMENTO OBJETO-RELACIONAL EM PHP COM OUTLET ORM Fábio Rehm
    2. O que é ORM? Mapeamento objeto-relacional (ou ORM) é uma técnica utilizada para reduzir as dificuldades de se programar orientado a objetos utilizando bancos de dados relacionais. (Wikipédia)
    3. Diferenças Relacional OO
    4. Diferenças Relacional OO
    5. Diferenças Relacional OO
    6. Diferenças Relacional OO
    7. Diferenças Relacional OO ?
    8. Diferenças Relacional OO ?
    9. Diferenças Relacional OO ?
    10. Antigamente...
    11. ... era trabalhoso ... Baixa produtividade X inúmeras tabelas e operações
    12. ... difícil de manter ... Duplicidade de código X inúmeras tabelas e operações
    13. ... e difícil de modificar Inviável substituir MySQL por outro banco
    14. Soluções  Banco de dados orientado a objetos  Nem sempre OO é a melhor forma de se resolver um problema  Mapeamento objeto-relacional:  Table Data Gateway – Gateway de tabela  Row Data Gateway – Gateway de linha de dados  Active Record – Registro ativo  Data Mapper – Mapeador de dados (Patterns of Enterprise Application Architecture, Martin Fowler)
    15. Como funciona um ORM? De forma simplificada:  Classes são mapeadas em tabelas  Instâncias (objetos) são (automaticamente) mapeadas em registros
    16. Table Data Gateway http://martinfowler.com/eaaCatalog/tableDataGateway.html  Uma classe por tabela  Funções básicas de CRUD  Pode implementar o relacionamento entre as tabelas  Normalmente trabalha com arrays
    17. Row Data Gateway http://martinfowler.com/eaaCatalog/rowDataGateway.html  Classe para manipular uma linha da tabela  Implementa apenas inserções e atualizações
    18. Active Record http://martinfowler.com/eaaCatalog/activeRecord.html  Semelhante ao Row Data Gateway  Classes devem herdar de uma classe Registro que provê a funcionalidade básica  Mistura de código para acesso a dados e lógica de domínio
    19. Data Mapper http://martinfowler.com/eaaCatalog/dataMapper.html  Persiste o modelo de objetos  Mapeamento externo a classe
    20. http://www.outlet-orm.org  Pode ser visto como um conjunto de mapeadores de dados e tem o funcionamento semelhante ao (N)Hibernate  Criado por Alvaro Carrasco (EUA) em ~2007  Possui código aberto  Consulta a objetos parecida com SQL  Utiliza PDO “por baixo dos panos” http://br.php.net/manual/en/intro.pdo.php  Banco de dados suportados:  MySQL, PostgreSQL, SQLite, MS SQL (parcial)
    21. simplicidade 10 arquivos +- 50 kb
    22. liberdade ou
    23. Requisitos  PHP 5.1.6+  Suporte a PDO para o banco de dados desejado  PHP 5.2+ para suporte a objetos DateTime
    24. Instalação 1. Download http://www.outlet-orm.org/site/downloads 2. Descompactar 3. set_include_path(PASTA_DE_DESTINO.';' . get_include_path()); (opcional)
    25. Exemplo
    26. Exemplo
    27. Mapeamento http://www.outlet-orm.org/manual/ch04.html
    28. Mapeamento http://www.outlet-orm.org/manual/ch04.html
    29. Mapeamento http://www.outlet-orm.org/manual/ch04.html
    30. Mapeamento http://www.outlet-orm.org/manual/ch04.html
    31. Mapeamento em XML http://groups.google.com.br/group/outlet-orm/files
    32. Relacionamentos definição chave estrangeira definição
    33. Relacionamentos
    34. CRUD
    35. CRUD
    36. ( mapa de identidade) http://martinfowler.com/eaaCatalog/identityMap.html  Assegura que cada objeto seja carregado apenas uma única vez, mantendo cada objeto em um mapa.
    37. CRUD
    38. CRUD
    39. CRUD - relacionamentos
    40. Lazy loading
    41. Fluent interface + Eager fetching
    42. Futuro do projeto  0.7 (versão corrente)  1.0  Ao que tudo indica será apenas a correção de bugs que já foram realizadas (svn/trunk) + suporte a múltiplas bases de dados  2.0  Suporte a chaves primárias compostas  Unidade de trabalho  Criação automática de tabelas  …  Plugin para eclipse  Possível migração para Github (2.0 está indo para lá)
    43. Unidade de trabalho http://martinfowler.com/eaaCatalog/identityMap.html  Mantém uma lista de objetos afetados por uma transação de negócio  Coordena a execução das ações (inserir, alterar, …)
    44. Unidade de trabalho
    45. Plugin para Eclipse
    46. Referências:  Patterns of Enterprise Application Architecture (Martin Fowler, 2003)  http://www.slideshare.net/alegomes/mapeamento-or- com-hibernate  http://www.slideshare.net/rob_knight/object-relational- mapping-in-php
    47. Dúvidas?
    48. Obrigado! Fábio Rehm fgrehm@gmail.com @fgrehm (twitter)

    + Fábio RehmFábio Rehm, 1 month ago

    custom

    301 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 301
      • 301 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 11
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events