Estou fazendo exatamente isso. Mas acho que estamos pensando de forma diferente, quando vc diz “caso de certo ou caso de errado”, já que o cliente já estar cadastrado não implica nisso, e sim no domínio do sistema, sendo necessário estar no service ou na própria classe. Alias, nem o próprio boolean quer dizer “certo ou errado”, e sim “verdadeiro ou falso”.
Mas repare bem que, se eu deixar desta forma, fica estranho um método que apenas salva os dados no SGBD retornar true ou false no controller, assim como não posso deixar pra verificar se o cliente já é cadastrado no controller, pois teria regra domínio nele.
Eu poderia fazer assim:
[code]public class ClienteService {
private ClienteDAO dao = new ClienteDAO();
public void salvar(Cliente cliente) {
dao.salvar(cliente);
}
public boolean isCPFCadastrado(String cpf) {
if (dao.isCPFCadastrado(cpf)) {
return true;
} else {
return false;
}
}
} [/code]
E na classe controller:
[code]public class ClienteController {
@RequestMapping(value=“cliente/novo”)
public String cadastrar() {
ClienteService clienteService = new ClienteService;
String cpf = blablabla;
if (clienteService.isCPFCadastrado(cpf)) {
clienteService.salvar;
return "sucesso"; // redireciona pra página informando que o cadastro foi feito com sucesso
} else {
return "cliente-ja-cadastrado"; // redireciona pra página informando que o cliente já possui cadastro
}
}
}[/code]
Mas desta forma eu estaria colocando regra de negócio - não poder cadastrar clientes de mesmo cpf no sistema - no controller. Tem horas que eu mesmo me pergunto se isso é realmente uma regra de negócio, visto que na maioria dos sistemas corporativos a inserção de dados redundantes - como dois registros de um mesmo cliente, nesse caso - é indesejado, o que o tornaria um interesse sistêmico - o que removeria ele da classe de serviço e poderia até ser tratado com AOP. O que vocês acham?
Sobre usar exceptions, eu vejo de forma diferente, já que elas não foram criadas pra isso. Colocar uma regra de negócio numa exception também não é correto, vc não acha?
Muito obrigado pela ajuda e atenção. Abraços!