Estória da semana: MVC onde fica a regra de negócio

Veja mais
Quer ter acesso a todos os cursos desse guia?
Guia

O que são formulários mestre detalhe?


Falhas de gravação é um dos piores cenários que podemos pensar durante o desenvolvimento de software e podemos minimizar esse problema com o padrão Mestre/Detalhe.

Muitas vezes, por uma questão de usabilidade, a aplicação necessita armazenar, em uma mesma requisição, um número variável de dados, criados em um formulário dinamicamente.

Nesse cenário, como a aplicação deve reagir se o banco parar de responder antes de todos os dados serem gravados? Imagine pagar por dez itens e receber apenas metade deles em sua casa? Tem hora que não dá pra falhar :/


Qual o check-list do mestre/detalhe?

Na aplicação que estamos discutindo, temos um relacionamento do tipo N para N, onde uma tecnologia pode ser vinculada a muitas vagas e vice versa. Ilustramos essa condição na Figura 2.

Modelagem do exemplo de Vaga e Tecnologias
Figura 2. Modelagem do exemplo de Vaga e Tecnologias

Devido a forte conexão entre essas entidades, as ações aplicadas a uma delas, principalmente a exclusão, deve ser refletida na outra. Para garantir isso, devemos isolar as operações que afetam ambas as entidades em classes especialistas, a fim, inclusive, de evitarmos a duplicação de código:

vagadao Nada disso

São muitos os detalhes com os quais se preocupar quando criamos uma aplicação mestre/detalhe :)

Para te ajudar a não esquecer nenhum deles, preparamos uma revisão de conteúdo, que vale a pena assistir:

Criando uma aplicação mestre/detalhe

Note que em um formulário como a que citamos acima a aplicação deve garantir que a gravação da vaga/itens seja feita de uma só vez, como uma mesma operação. O conceito de atomicidade, que estudamos em bancos de dados, quer dizer exatamente isso.

Nesse sentido, se enviamos 10 itens através do formulário, caso a aplicação falhe durante a gravação do sexto item, toda a operação deve falhar e nenhum deve ser gravado no banco de dados.

No curso a seguir, mostramos como utilizar transações para resolver esse problema de gravação e pontuamos outros problemas comuns encontrados no planejamento desse tipo de aplicação:

Entenda os relacionamentos 1 para n e n para n em cada linguagem

Grande parte da complexidade por trás de uma aplicação mestre/detalhe, como a que vimos no curso acima, está na implementação dos relacionamentos entre as suas entidades.

Apenas analisando os atributos de cada uma dessas entidades e como elas interagem uma com as outras podemos implementar esses relacionamentos corretamente, o que envolve o conhecimento da aplicação a ser construída.

Abaixo, selecionamos alguns cursos que demonstram como fazer isso em diferentes linguagens, incluindo a sua :)

Java

PHP

.NET

Python/Django

Suporte ao aluno - Deixe a sua dúvida.
Achou 12 meses muito tempo?

Programação muda todo dia e cada novidade nos obriga a rever tudo que já sabíamos. Só um estudo contínuo nos leva ao sucesso.

Apenas 3,5% dos nossos assinantes querem cancelar antes dos 12 meses

O que nossos clientes dizem:

"Excelente trabalho. É assim que a gente vê que o investimento vale a pena. Parabéns!"

- Danniery Alves -
O que nossos clientes dizem:

"Prá lá de bom... Está ótimo: com clareza, didática, conhecimento de causa e uma boa dose de humor. "Persistência" é o segredo."

- Paulo Costa -
O que nossos clientes dizem:

"DevMedia ensina mais do que qualquer faculdade!!!"

- Mauricio Hartmann -