UNIVERSIDADE CATÓLICA DE BRASÍLIA 2011 PAULO LIMA aluno FERNANDO GOULART orientador.

Post on 21-Apr-2015

106 views 2 download

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