Persistência de Dados, Padrão DAO e MVC
Classificado em Computação
Escrito em em
português com um tamanho de 3,92 KB
Quais as principais atividades a serem realizadas durante o processo de conversão do diagrama de classes da GD para o modelo de persistência de BD - DER?
No mapeamento dos mundos de objetos e relacional, as seguintes questões devem ser abordadas:
- Mapeamento de Classes para Tabelas e de Objetos para Linhas:
- Quando não há herança, cada classe deve ser mapeada em uma tabela e cada instância da classe (objeto) em uma linha desta tabela.
- O modelo de classes deve ser normalizado, eliminando-se atributos multivalorados (3ª FN).
- Toda tabela tem de ter uma chave primária (observar se há um atributo na classe com esta propriedade de identificação única e utilizá-lo, então, como chave primária. Caso não haja um atributo com tal característica, deverá ser criado um).
- Mapeamento de Herança (Alternativas):
- Utilizar uma tabela para toda a hierarquia;
- Utilizar uma tabela por classe concreta na hierarquia;
- Utilizar uma tabela por classe na hierarquia.
- Mapeamento de Relacionamento:
- Uma vez que a persistência será feita em um banco de dados relacional, é necessário transpor chaves entre tabelas para mapear relacionamentos;
- As regras válidas para o modelo relacional têm de ser aplicadas, tal como criar tabelas adicionais para mapear relacionamentos muitos-para-muitos.
Descreva o Padrão DAO para persistência de objetos em um SGBD relacional.
O DAO (Data Access Object) é um tradutor de mundos: Orientado a Objetos de um lado e persistente de outro. Ele é empregado ao utilizarmos as classes de persistência apresentadas anteriormente. O DAO deve buscar os dados do banco e convertê-los em objetos para serem usados pela aplicação. Semelhantemente, deve saber como obter os objetos, convertê-los em instruções SQL e enviá-los para o banco de dados.
O DAO abstrai a origem e o modo de obtenção/gravação dos dados, de modo que o restante do sistema manipula os dados de forma transparente, sem se preocupar com o que acontece por trás dos panos.
Geralmente, temos um DAO para cada objeto do domínio do Problema (DP) (como Produto, Cliente, Compra, etc.), ou então para cada módulo ou conjunto de entidades fortemente relacionadas. Cada DAO deve possuir uma interface que especifica os métodos de manipulação de dados. Isso é uma boa prática, não somente em termos de persistência, mas em vários outros pontos de uma aplicação. A figura abaixo ilustra a dinâmica do comportamento DAO. Forma de mapeamento DAO x DP:
Qual o papel da Gerência de Tarefas no modelo MVC estendido?
O Componente Gerência de Tarefas (CGT) compreende a definição de tarefas e a comunicação e coordenação entre elas. É o equivalente ao Controle no modelo MVC. Um termo fortemente relacionado ao papel da Gerência de Tarefas é Orquestração.
Os componentes da GT (suas classes) são responsáveis pela realização de tarefas sobre um determinado conjunto de objetos ou atuam como gerenciadores/coordenadores de tarefas. Em geral, a GT pode ser representada por uma classe Controle ("gerente") associada a classes executoras ("operárias"), conforme a figura abaixo:
Qual a relação entre a Gerência de Tarefas e os demais componentes do modelo MVC estendido?
Em geral, a IU (Interface do Usuário) possui interface somente com a GT (Gerência de Tarefas). Assim, estes componentes devem ser realizados conjuntamente durante a fase de Projeto (com informações provenientes dos Use Cases e do Diagrama de Sequência). A proposta do modelo MVC é isolar as demais camadas (GD - Gerência de Domínio e DP - Domínio do Problema) da IU. Veja a figura abaixo.