Salve dois objetos de domínio diferentes em uma chamada de serviço

5

Pense que, quando um Branch é salvo, uma entidade Customer deve ser criada na arquitetura do sistema em camadas. Toda validação já implementada no CustomerService.

  1. O BranchService deve criar a instância CustomerService para criar cliente?
  2. Validação do implemento do serviço de filiais novamente para o Cliente e chamada CustomerRepository?
  3. A filial deve ter a entidade do cliente como uma propriedade e deve ter Validação do cliente no BranchService?

As classes de amostra são

Branch
    - Code
    - Description
    - CustomerId


Customer
    - Code
    - Description
    - CustomerType

BranchRepository
    - Add
    - Remove
    - Get

CustomerRepository
    - Add
    - Remove
    - Get

BranchService
    - AddBranch (Validates entities)

CustomerService 
    - AddCustomer (Validates entites)
    
por hkutluay 11.03.2016 / 11:00
fonte

2 respostas

1

Não se concentre tanto em criar serviços específicos da entidade, mas use serviços específicos de casos .

Seu código deve refletir sua lógica e processos de negócios e seus casos de uso. Se você tiver um caso de uso que diga que o cliente e a filial devem estar comprometidos juntos, crie esse serviço.

Crie um serviço CustomerBranch que englobe o cliente e a filial. Você pode armazenar a validação nas próprias entidades ou em um serviço separado. Você decide. Ou você pode injetar seus serviços atuais neste, onde você usará sua lógica de validação.

Depois, você pode usar o Padrão de unidade de trabalho , onde você usa seus repositórios para apenas "notificar" ORM de que há uma alteração em uma entidade e UoW para confirmar essas alterações no banco de dados. O padrão UoW permite que você (entre outras coisas) confirme lotes de entidades alteradas.

Padrão de repositório, como é defendido em toda a Internet (na minha opinião errado, mas isso é outro assunto), concentra-se em mudanças de uma única entidade.

    
por 09.04.2017 / 10:01
fonte
0
  1. Existem dois padrões que podem resolver este problema. i) Use o padrão de repositório para projetar a camada de dados. Referência - link ii) Unidade de trabalho link

  2. Use serialização de tempo de execução sobre objetos usando bibliotecas disponíveis (Jackson - um dos melhores disponíveis por aí)

  3. Os pontos finais do serviço parecem corretos para mim, no entanto, sugiro manter o objeto de referência do Cliente dentro da classe de ramificação.

  4. Permitir que o serviço aceite o Json em vez de objetos qualificados. É aqui que o passo 2 é útil.

  5. (adicional) o descanso na mola manuseia as etapas 2 e 4 elegantemente. Referência - link

Suponho que você esteja criando a solução usando o Java. Espero que ajude.

    
por 14.03.2016 / 20:23
fonte