UNIVERSIDADE CATÓLICA DE BRASÍLIA 2011 PAULO LIMA aluno FERNANDO GOULART orientador.
Transcript of UNIVERSIDADE CATÓLICA DE BRASÍLIA 2011 PAULO LIMA aluno FERNANDO GOULART orientador.
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