DDD - Dúvida

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]