Bom eu normalmente crio uma classe que intermedia o acesso ao banco de dados por exemplo, verificando então, se os dados enviados pela view estão corretos para o acesso ao banco de dados.
Tenho vários controllers em minhas aplicações, ja que tenho várias views (WEB, Desktop)
Se a sua aplicação não é multi-banco, ou seja, você não usa persistência de dados, procure implementar o DAOFactory que ajuda e muito.
Ai que tá amigo, minha dúvida está, em ONDE e COMO implementar. Eu devo criar uma nova classe listener separada da view? mas como a listener vai conhecer os dados da view dai? poderia me dar um exemplo ?
Você pode criar uma classe (PessoaController) que teria o método incluir que recebe como parâmetro um objeto Pessoa, então você verifica se os dados estão corretos e então prosseguir com a operação de inclusão no banco de dados, caso seja encontrada alguma inconsistência você pode tratar o erro ou até mesmo retornar o erro à view, mas ai você terá que retornar o erro de uma forma elegante a view.
Geralmente utilizo um List com o código do erro e a descrição do erro.
Os eventos da view, você trata na view, agora os dados que irão para um banco de dados por exemplo, então ai você tem que verificar as inconsistências, para não permitir erros no banco de dados por exemplo.
Eu normalmente utilizo a camada C (Controller) para a manipulação dos dados dentro do banco.
Por exemplo:
class PessoaDAO {
public Pessoa selectByName(String name) {
// todo o codigo que captura os dados do banco
Pessoa model = new Pessoa();
model.setName(rs.getString("name"));
// etc etc etc
return model;
}
// outros métodos de manipulação de banco de dados
}