DDD - Dúvida

2 respostas
jherimum

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

2 Respostas

pcalcado

É 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/

jherimum

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:

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();
		
	}
	
}
Criado 19 de março de 2010
Ultima resposta 22 de mar. de 2010
Respostas 2
Participantes 2