DDD - Classe de dominio + repository + dao

Boa tarde,

Considerando uma classe Usuario qualquer, e um repositorio de usuários, responsável por realizar a criação/load/remove de objetos na base de dados. Supondo que eu implemente um serviço chamado “MoveUsuarioService”, que remove o usuario de uma tabela e insere na outra.

Faz sentido o serviço ter uma interface para o repositorio? Ou ele deveria conhecer apenas a classe de negocio (usuario) ?

[]s

Olá,

em minha opinião está difícil sugerir algo, isso por que sua colocação ficou muito técnica. Você está querendo mover uma informação de uma tabela para outra. Quando o assunto é DDD você precisa falar mais utilizando os termos do negócio. Por exemplo, vc pode dizer que quer mover usuário de uma tabela para outra, mas para o domínio, o que realmente está acontecendo é que vc quer mover o usuário do almoxorifado para a diretoria.

Tendo uma melhor idéia do negócio fica mais fácil sugerir o comportamento e métodos que terão no seu domínio. :wink:

Tiago,

O moveUsuario foi um exemplo que inventei na hora. Pode ser algo mais funcional. A minha duvida é no relacionamento entre classe de negocio, repositorio, dao e service. Na hora de orquestrar as coisas…

Tks =)

Bom, tentando responder sua pergunta: não vejo problemas do seu service conhecer o seu repositório. Mas isso não quer dizer que é a solução ideal, pois depende do seu negócio. Dependendo do caso faz mais sentido que a entidade possua um

mas como você já teve que optar por usar um service de fato (ou pela complexidade do negócio, ou para deixar o domínio mais claro), não vejo problemas em acessar o repositório.

O DAO é infraestrutura, portanto, deixe-o longe do seu domínio. :wink: Existem várias discussões aqui no GUJ discutindo o assunto.