pcalcado:
Vamos trabalhar com um exemplo? Suponha que pra inserir o usuário existam os passos:
1 - Criar objeto usuário
2 - Colocar usuário num grupo
3 - Colcoar como gerente do usuário o gernete do grupo
4 - Chamar o DAo que persiste a coisa toda
Como você pensa nisso implementado?
Aproveitando a duvida do amigo acima. Eu acho que as coisas poderiam ser implementadas assim
public class UserBean{
public void insert(){
User user = new User("fulano");
user.setGrupo(grupoA);
user.setGerente(pessoaA);
user.save();
}
}
public class User{
private Grupo grupo;
private Pessoa gerente;
//geters and seters
public void save(){
repositorio.save(this);
}
}
No exemplo acima os CRUD nao ficam na classe de negocio, mas ainda permanecem dentro do dominio, porem parte da logica de negocio fica exposta ao cliente.
O exemplo abaixo acho que descreve como as coisas deveriam ser segundo as boas regras do DDD
public class UserBean{
public void insert(){
UserTO userTO = new UserTO("fulano");
userTO.setGrupo(grupoA);
userTO.setGerente(pessoaA);
UserService.save(userTO);
}
}
public class UserService{
public static void insert(UserTO userTO){
User entity = new User();
entity.setGrupo( userTO.getGrupo() );
entity.setGerente( userTO.getGerente() );
repositorio.save(entity);
}
}
public class User{
private String name;
private Grupo grupo;
private Pessoa gerente;
//geters and seters
}
public class UserTO{
private String name;
private Grupo grupo;
private Pessoa gerente;
//geters and seters
}
Observacoes:
O repositorio presenta o nosso conhecido DAO, mas pode ser qualquer outra coisa, para criar a instancia disso eu deixo a cargo de nossa imaginação
O exemplo sugerido é bem simples, mas se vc nao se prender ao exemplo vc pode enxergar cituações onde isso é necessário.