universidade catÓlica de brasÍlia 2011 paulo lima aluno fernando goulart orientador
TRANSCRIPT
Goyaz Persistência sem
esforçosUNIVERSIDADE CATÓLICA DE BRASÍLIA2011
PAULO LIMAaluno
FERNANDO GOULARTorientador
IntroduçãoApresentação dos conceitos básicos
Orientação a Objetos VS
Bancos de Dados Relacionais
Orientação a Objetos
Virtudes: Abstração; Herança; Reusabilidade; Regras de negócio; Encapsulamento; Camadas
Vícios: Otimização; Complexidade; Desorganização;
Bancos de dados
Virtudes Otimização; Boa visualização
dos dados; Segurança; Independência de
paradigmas; Padrão industrial;
Vícios: Conectores; Diversos dialetos; Complexidade nas
instruções; Manutenibilidade;
Por que juntá-las?
Manter os dados da aplicação coesos e seguros;
Permitir que diferentes aplicações utilizem os mesmos dados; Existem outras formas de se obter esse
resultado; Desenvolver as regras de negócio
com mais facilidade;
Como juntá-las?
Camada de persistência; Padrões de projeto;
Table data gateway; Row data gateway; Data mapper; Active record; Outras opções / variações;
Manutenibilidade;
Padrões de ProjetoUma visão sobre casos de sucesso na resolução dos
problemas apresentados
Table Data Gateway
Definição: Classe que irá conter
todos os códigos SQL para acesso a uma determinada tabela ou view;
Separação das regras de negócio;
Uma classe por tabela, evitando bagunça;
Deve retornar somente um tipo de dado;
Row Data Gateway
Consiste em representar um único registro em uma determinada tabela no banco de dados;
Overhead de memória;
Row Data Gateway
Data Mapper
Isolamento entre os objetos de negócios e os dados no banco;
Transparência; Mapeamento entre
objetos na aplicação e tabelas no banco;
Active Record
Um único objeto com métodos comportamentais e métodos para realizar a persistência;
Caso seja muito complexo o objeto a ser persistido, o desempenho caí drasticamente;
Herança em tabela única
Herança em tabelas concretas
Herança tabela classe
Qual padrão escolher?
Considere: Complexidade da aplicação; Parque computacional; Tempo disponível; Capacidade técnica;
Faça adaptações, caso necessário;
GoyazProtótipação em PHP
Dificultadores
Como descobrir a quem pertence um determinado atributo? Caso hajam dois atributos na classe pai
e filha com o mesmo nome, não é possível determinar de qual se trata;
Reflexão;
Reflexão
Técnica que consistem em levantar informações sobre um determinado recurso em tempo de execução;
Nativamente implementado no PHP;
Na prática
Agenda: Models; Actions;
Dúvidas?
Agradecimentos