Olá a todos, eu estava pesquisando algo sobre DDD e coisas relacionadas como entidades anêmicas,modelos ricos, excesso de gets e sets e encontrei esse post bem legal http://blog.fragmental.com.br/2008/05/18/objetos-nao-sao-atributos-funcoes/ mas me surgiu uma dúvida. No exemplo dele temos uma entidade Pedido e esse pedido tem um status para ilustrar como evitar um set que seria desnecessário, para finalizar um pedido no lugar de ter um
ele adicionou uma regra de negócio na entidadepedido.finalizar();
e para saber se o pedido foi finalizado bastaria fazer
p.isFinalizado();,
imagino que no exemplo o status seja representado por uma string no banco de dados, supondo a mesma situação de pedido e status mas agora considerando que Status também é uma entidade que está persistida no banco, como eu faria para finalizar um pedido seguindo esse modelo?me passou pela cabeça eu ter algo do tipo
public void finalizar(){
Status status = algumServiceInjetado.recuperarStatus(Status.FINALIZADO);
pedido.status = status;
outroSerivice.atualizar(pedido);
}
mas ter métodos que fazem acesso banco de dados dentro de entidades pra mim é algo que soa bem feio, pra mim isso é gambiarra, qual uma boa solução pra este tipo de caso? ou deveria ter esse método finalizar(Pedido pedido)
para dentro de um Service(http://www.guj.com.br/java/75388-fugindo-do-modelo-anemico) e na minha entidade ficar apenas com o isFinalizado() ?