Senhores DDD’s hehehe
estou me começando meus estudos em ddd ee stou com a seguinte duvida…
imaginem um sistema que eu tenha um cadastro de pessoas, e esse cadastro tem as seguintes operacoes, novo, alterar, excluir.
a estutura de camadas que pensei foi a seguinte
UI - jsf
Controller - managed beans
fachada - esta camada tem como finalidade tranformas os dtos em objetos e vice-versa
servico
dominio
minha duvida é o seguinte quando o usario for alterar uma pessoas, eu devo criar um metodo no servico de pessoa que comtemple essa funcionalidade ou posso fazer a operacao de alteração dos atributos na fachada?
nao sei se expliquei direito
mas tentem me ajudar
É bom ler a bibliografia básica antes de se aventurar. Este tipo de dúvida está bem explicado no material de referência. O GUJ também está cheio de threads sobre isso.
Outras coisas que podem ajudar:
http://blog.fragmental.com.br/2007/06/07/ddd-e-dto/
philipe, talvez com código fique mais facil vc me sanar a duvida…
é correto eu criar os metodos de CRUD de uma entidade na camada de serviço?
olhe o código abaixo:
[code]package br.jherimum.ddd.sicat.application;
import java.util.List;
import br.jherimum.ddd.sicat.Bairro;
import br.jherimum.ddd.sicat.Cidade;
import br.jherimum.ddd.sicat.domain.campanha.Campanha;
import br.jherimum.ddd.sicat.domain.campanha.CampanhaRepository;
import br.jherimum.ddd.sicat.domain.campanha.MetaCampanha;
import br.jherimum.ddd.sicat.domain.campanha.NumeroCampanha;
import br.jherimum.ddd.sicat.domain.campanha.Campanha.CampanhaBuilder;
public class CampanhaServiceImpl implements CampanhaService {
private CampanhaRepository campanhaRepository;
public Campanha createCampanha(String nome, Cidade cidade, List<Bairro> bairros, MetaCampanha metaCampanha) {
Campanha campanha = null;
CampanhaBuilder campanhaBuilder = new Campanha.CampanhaBuilder().nome(nome).cidade(cidade).meta(metaCampanha);
for(Bairro bairro: bairros){
campanhaBuilder.bairro(bairro);
}
campanha = campanhaBuilder.build();
campanha.save();
return campanha;
}
public void updateCampanha(NumeroCampanha numeroCampanha, String nome, Cidade cidade, List<Bairro> bairros, MetaCampanha metaCampanha){
Campanha campanha = campanhaRepository.find(numeroCampanha);
campanha.changeName(nome);
campanha.changeLocalidade(cidade, bairros);
campanha.changeMeta(metaCampanha);
campanha.update();
}
@Override
public void deleteCampanha(NumeroCampanha numeroCampanha) {
campanhaRepository.find(numeroCampanha).delete();
}
}
[/code]