Paulo, olha essa minha outra dúvida que tive, o Alberto me alertou justamente sobre isso, a service deve conter a orquestração, quem deve manter o estado é o próprio objeto.
Por exemplo, na minha classe MateriaService por exemplo eu faço assim:
public Materia salvarMateria(Materia materia, Usuario usuario){
boolean diarioAberto = diariosRepository.diarioEstaAberto(materia.getDiario().getDiarioId());
if(!diarioAberto){
throw new RuntimeException("Esta edição do diário já fechou ");
}
materia.setMatriculaInclusao(usuario.getMatricula());
materia.setSetorOrigem(usuario.getSetor());
materiasRepository.salvarMateria(materia);
return materia;
}
pra manter este código coeso ele deveria estar assim
public Materia salvarMateria(Materia materia, Usuario usuario){
boolean diarioAberto = diariosRepository.diarioEstaAberto(materia.getDiario().getDiarioId());
if(!diarioAberto){
throw new RuntimeException("Esta edição do diário já fechou ");
}
materia.atribuirUsuario(usuario);
materiasRepository.salvarMateria(materia);
return materia;
}
e na classe Materia
public Class Materia(){
//outros atributos e métodos
public void atribuirUsuario(Usuario usuario){
this.matriculaInclusao(usuario.getMatricula());
this.setorOrigem(usuario.getSetor());
}
}