Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Siga a doutrina certa

Siga a doutrina certa

Palestra apresentada na PHP Conference Brasil 2012.

A palestra tem como objetivo mostar uma visão geral do doctrine ORM, vantagens em usa-lo, componentes e melhores praticas para o desenvolvimento de uma aplicação escalável.

Fabio B. Silva

November 30, 2012
Tweet

More Decks by Fabio B. Silva

Other Decks in Programming

Transcript

  1. Quem é esse cara ai ? • Fabio B. Silva

    • Desenvolvedor php • Desenvolvedor java • Doctrine core developer • @FabioBatSilva • github.com/FabioBatSilva • Alcoolatra nas horas vagas
  2. ORM • Baseado no JPA (Hibernate / EJB / Nhibernate)

    • Construído sobre componentes • Data Mapper • Objetos Simples • DQL • Otimizado • Performance
  3. Cascade Operations • persist • remove • merge • detach

    • all Operações executadas nos relacionamentos
  4. Herança Uma classe em uma tabela • Concrete Table Inheritance

    • Single Table Inheritance • Class Table Inheritance
  5. Herança Várias classes em uma mesma tabela • Concrete Table

    Inheritance • Single Table Inheritance • Class Table Inheritance
  6. Herança Várias classes em várias tabelas • Concrete Table Inheritance

    • Single Table Inheritance • Class Table Inheritance
  7. DQL Doctrine Query Language • DQL : Doctrine Query Language

    • Usa Classes e propriedades invés de tabelas e colunas • Normalmente retorna uma lista de entidades • Parseado para SQL nativa • Cross database
  8. DQL

  9. ORMs não tem boa performance ... • São lentos •

    Complicados de usar • Complicados de configurar • Só podem ser usados para coisas simples
  10. ORMs não tem boa performance ... • O problema é

    cultural • Desenvolvedores usam ORM porque não conhecem SQL e SGBDs • Conheça bancos de dados antes de usar um ORM • ORM não substitui PDO, são construídos sobre ele • A abstração tem um custo • Read the fucking manual
  11. Best Practices : Cuidado no uso de eventos Evento é

    disparado para todas as entidades persistidas.
  12. Cache Melhor amigo da performance • Metadata Cache • Query

    Cache • Result Cache Cache dos mapeamentos das entidades
  13. Cache Melhor amigo da performance • Metadata Cache • Query

    Cache • Result Cache Cache dos parser de DQL para SQL nativa
  14. Cache Melhor amigo da performance • Metadata Cache • Query

    Cache • Result Cache Cache dos resultados de consultas