Pergunta

Apenas tentando colocar minha cabeça em volta das responsabilidades da camada de serviço e da camada de repositório ao salvar um objeto na minha loja de persistência.

Minha atual posição é a seguinte:

No meu controlador, criei um objeto "Nota" a partir dos dados enviados pelo usuário (a partir do formulário). O usuário chama "Salvar" no "Notes Service" (que existe por meio de injeção de dependência).

Dentro do método "salvar" no "Notes Service", eu executo minha validação de lógica de negócios e, em seguida, passe o objeto "Nota" para o método "salvar" do "notonePository".

O método "Salvar" do "notonepository" verifica se existe uma chave primária existente nesse objeto e, se assim for, obtenha esse objeto do banco de dados e atualiza suas propriedades usando o objeto "Nota" passada e é salvo de volta ao banco de dados. Se não houver chave primária, o objeto será simplesmente salvo no banco de dados e o então retornou ao serviço com a chave primária recém -criada.

Foi útil?

Solução

Sua separação de preocupações parece muito boa para mim. Seguimos o mesmo padrão, mas tendemos a adicionar mais uma camada diretamente sobre a camada do repositório. Chamamos isso de camada de domínio e executamos toda a nossa lógica de negócios lá. Nossa camada de serviço é apenas uma passagem para o nosso domínio, caso precisemos publicar qualquer um de nossos serviços a um ESB no futuro.

O maior benefício do que você está fazendo não é confundir todos os negócios e lógica do banco de dados no controlador que muitas pessoas tendem a fazer. Você sempre deseja que seus controladores sejam o mais leve possível se você realmente deseja seguir o MVC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top