Abstrações de Entidades

Bom dia, fiz uma classe de negócio que faz as inserções, pesquisas e exclusões em uma base de dados, as tabelas são mapeadas todas para objetos JavaBeans. Quando faço a inserção tudo bem, mas quando precisei fazer uma pesquisa para autenticação, retornando o objeto usuário, de tiuti. A princípio acho que entrei em um loop infinito pois a aplicação não retorna nada, e quando fui debugá-la apareceu o erro:

:!: Vou colocar o código aqui. Todas as críticas são bem aceitas.

public class EntitiesFacade {

	public void inseriAvalicao(AvaliacaoBean avaliacao){
		try{
			Connection con = ConectaFB.getConexao();
			PreparedStatement psmt = con.prepareStatement(
					"INSERT INTO AVALIACAO (ID, DATA, NQUESTOES, PONTUACAO, SELECAO, CANDIDATO) VALUES (?,?,?,?,?,?)");
			psmt.setInt(1, avaliacao.getId());
			psmt.setDate(2, new Date(avaliacao.getData().getTime()));
			psmt.setInt(3, avaliacao.getNQuestoes());
			psmt.setDouble(4, avaliacao.getPontuacao());
			psmt.setInt(5, avaliacao.getSelecao().getId());
			psmt.setInt(6, avaliacao.getCandidato().getId());
			psmt.executeUpdate();
			psmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao incluir avaliacao!");
		}
	}
	
	public AvaliacaoBean selecionaAvaliacao(int id){
		AvaliacaoBean avaliacao = new AvaliacaoBean();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery("SELECT ID, DATA, NQUESTOES, PONTUACAO, SELECAO, CANDIDATO FROM AVALIACAO WHERE ID = " + id);
			while(rs.next()){
				avaliacao.setId(rs.getInt("ID"));
				avaliacao.setData(rs.getDate("DATA"));
				avaliacao.setNQuestoes(rs.getInt("NQUESTOES"));
				avaliacao.setPontuacao(rs.getDouble("PONTUACAO"));
				avaliacao.setSelecao(selecionaSelecao(rs.getInt("SELECAO")));
				avaliacao.setQuestoes(listaQuestoes(rs.getInt("ID")));
			}	
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao selecionar avaliacao!");
		}
		return avaliacao;
	}
	
	public Collection listaAvaliacoes(String origem, int id){
	    ResultSet rs;
	    int pos = 0;
	    List lista = new Vector();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			if(origem.equals(null)){
			    rs = smt.executeQuery(
			        "SELECT ID, DATA, NQUESTOES, PONTUACAO, SELECAO, CANDIDATO FROM AVALIACAO ORDER BY DATA");
			} else if (origem.equals("SELECAO")){
			    rs = smt.executeQuery(
				     "SELECT ID, DATA, NQUESTOES, PONTUACAO, SELECAO, CANDIDATO FROM AVALIACAO WHERE SELECAO = " + id + " ORDER BY DATA");
			} else if (origem.equals("CANDIDATO")){
			    rs = smt.executeQuery(
				     "SELECT ID, DATA, NQUESTOES, PONTUACAO, SELECAO, CANDIDATO FROM AVALIACAO WHERE CANDIDATO = " + id + " ORDER BY DATA");
			}  else {
			    rs = smt.executeQuery(
				     "SELECT ID, DATA, NQUESTOES, PONTUACAO, SELECAO FROM AVALIACAO ORDER BY DATA");
			} 
			
			while(rs.next()){
			    AvaliacaoBean avaliacao = new AvaliacaoBean();
			    avaliacao.setId(rs.getInt("ID"));
				avaliacao.setData(rs.getDate("DATA"));
				avaliacao.setNQuestoes(rs.getInt("NQUESTOES"));
				avaliacao.setPontuacao(rs.getDouble("PONTUACAO"));
				avaliacao.setSelecao(selecionaSelecao(rs.getInt("SELECAO")));
				avaliacao.setQuestoes(listaQuestoes(rs.getInt("ID")));
				lista.set(pos, avaliacao);
				pos++;
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao listar avaliacoes!");
		}
		return lista;
	}
	
	public void inseriAvaliador(AvaliadorBean avaliador){
		try{
			Connection con = ConectaFB.getConexao();
			PreparedStatement psmt = con.prepareStatement(
					"INSERT INTO AVALIADOR (ID, NOME, APELIDO, SENHA, EMAIL ) VALUES (?,?,?,?,?)");
			psmt.setInt(1, avaliador.getId());
			psmt.setString(2, avaliador.getNome());
			psmt.setString(3, avaliador.getApelido());
			psmt.setString(4, avaliador.getSenha());
			psmt.setString(5, avaliador.getEmail());
			psmt.executeUpdate();
			psmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao incluir avaliador!");
		}
	}
	
	public AvaliadorBean selecionaAvaliador(int id){
		AvaliadorBean avaliador = new AvaliadorBean();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery(
					"SELECT ID, NOME, APELIDO, SENHA, EMAIL FROM AVALIADOR WHERE ID = " + id);
			while(rs.next()){
				avaliador.setId(rs.getInt("ID"));
				avaliador.setNome(rs.getString("NOME"));
				avaliador.setApelido("APELIDO");
				avaliador.setSenha(rs.getString("SENHA"));
				avaliador.setEmail(rs.getString("EMAIL"));
				avaliador.setSelecoes(listaSelecoes(rs.getInt("ID")));
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao selecionar avaliador!");
		}
		return avaliador;
	}
	
	public Collection listaAvaliadores(int id){
		int pos = 0; 
	    List lista = new Vector();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery("SELECT ID, NOME, APELIDO, SENHA, EMAIL FROM AVALIADOR ORDER BY NOME");
			while(rs.next()){
			    AvaliadorBean avaliador = new AvaliadorBean();
			    avaliador.setId(rs.getInt("ID"));
				avaliador.setNome(rs.getString("NOME"));
				avaliador.setApelido("APELIDO");
				avaliador.setSenha(rs.getString("SENHA"));
				avaliador.setEmail(rs.getString("EMAIL"));
				avaliador.setSelecoes(listaSelecoes(rs.getInt("ID")));
				lista.set(pos , avaliador);
				pos++;
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao listar avaliadores!");
		}
		return lista;
	}

	public void inseriBoletim(BoletimBean boletim){
	    try{
			Connection con = ConectaFB.getConexao();
			PreparedStatement psmt = con.prepareStatement(
					"INSERT INTO BOLETIM (ID, NOTA, CANDIDATO, AVALIACAO) VALUES (?,?,?,?)");
			psmt.setInt(1, boletim.getId());
			psmt.setDouble(2, boletim.getNota());
			psmt.setInt(3, boletim.getCandidato().getId());
			psmt.setInt(4, boletim.getAvaliacao().getId());
			psmt.executeUpdate();
			psmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao incluir boletim!");
		}
	}
	
	public BoletimBean selecionaBoletim(int id){
		BoletimBean boletim = new BoletimBean();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery(
			        "SELECT NSERT INTO BOLETIM (ID, NOTA, CANDIDATO, AVALIACAO FROM BOLETIM WHERE ID = " + id);
			while(rs.next()){
			    boletim.setId(rs.getInt("ID"));
			    boletim.setNota(rs.getDouble("NOTA"));
			    boletim.setCandidato(selecionaCandidato(rs.getInt("CANDIDATO")));
			    boletim.setAvaliacao(selecionaAvaliacao(rs.getInt("AVALIACAO")));
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao selecionar boletim!");
		}
		return boletim;
	}
	
	public Collection listaBoletins(){
		int pos = 0; 
	    List lista = new Vector();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery("SELECT ID, NOTA, CANDIDATO, AVALIACAO FROM BOLETIM ORDER BY CANDIDATO");
			while(rs.next()){
			    BoletimBean boletim = new BoletimBean();
			    boletim.setId(rs.getInt("ID"));
			    boletim.setNota(rs.getDouble("NOTA"));
			    boletim.setCandidato(selecionaCandidato(rs.getInt("CANDIDATO")));
			    boletim.setAvaliacao(selecionaAvaliacao(rs.getInt("AVALIACAO")));
			    lista.set(pos, boletim);
			    pos++;
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao listar boletins!");
		}
		return lista;
	}
	
	public void inseriCandidato(CandidatoBean candidato){
		try{
			Connection con = ConectaFB.getConexao();
			PreparedStatement psmt = con.prepareStatement(
					"INSERT INTO CANDIDATO (ID, NOME, APELIDO, SENHA, EMAIL ) VALUES (?,?,?,?,?)");
			psmt.setInt(1, candidato.getId());
			psmt.setString(2, candidato.getNome());
			psmt.setString(3, candidato.getApelido());
			psmt.setString(4, candidato.getSenha());
			psmt.setString(5, candidato.getEmail());
			psmt.executeUpdate();
			psmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao incluir Candidato!");
		}
	}
	
	public CandidatoBean selecionaCandidato(int id){
		CandidatoBean candidato = new CandidatoBean();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery(
					"SELECT ID, NOME, APELIDO, SENHA, EMAIL FROM CANDIDATO WHERE ID = " + id);
			while(rs.next()){
				candidato.setId(rs.getInt("ID"));
				candidato.setNome(rs.getString("NOME"));
				candidato.setApelido("APELIDO");
				candidato.setSenha(rs.getString("SENHA"));
				candidato.setEmail(rs.getString("EMAIL"));
				candidato.setAvaliacoes(listaAvaliacoes("CANDIDATO",rs.getInt("ID")));
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao selecionar candidato!");
		}
		return candidato;
	}
	
	public Collection listaCandidatos(){
		int pos = 0;
	    List lista = new Vector();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery(
			        "SELECT ID, NOME, APELIDO, SENHA, EMAIL FROM CANDIDATO ORDER BY NOME");
			while(rs.next()){
			    CandidatoBean candidato = new CandidatoBean();
			    candidato.setId(rs.getInt("ID"));
				candidato.setNome(rs.getString("NOME"));
				candidato.setApelido("APELIDO");
				candidato.setSenha(rs.getString("SENHA"));
				candidato.setEmail(rs.getString("EMAIL"));
				candidato.setAvaliacoes(listaAvaliacoes("CANDIDATO", rs.getInt("ID")));
				lista.set(pos, candidato);
				pos++;
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao listar candidatos!");
		}
		return lista;
	}
	
	public void inseriQuestao(QuestaoBean questao){
		try{
			Connection con = ConectaFB.getConexao();
			PreparedStatement psmt = con.prepareStatement(
					"INSERT INTO QUESTAO (ID, PERGUNTA, RESPOSTA, ALTERNATIVA_1, ALTERNATIVA_2, ALTERNATIVA_3, AVALIACAO) VALUES (?,?,?,?,?,?,?)");
			psmt.setInt(1, questao.getId());
			psmt.setString(2, questao.getPergunta());
			psmt.setString(3, questao.getResposta());
			psmt.setString(4, questao.getAlternativa_1());
			psmt.setString(5, questao.getAlternativa_2());
			psmt.setString(6, questao.getAlternativa_3());
			psmt.setInt(7, questao.getAvalicao().getId());
			psmt.executeUpdate();
			psmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao incluir questao!");
		}
	}
	
	public QuestaoBean selecionaQuestao(int id){
		QuestaoBean questao = new QuestaoBean();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery(
			        "SELECT ID, PERGUNTA, RESPOSTA, ALTERNATIVA_1, ALTERNATIVA_2, ALTERNATIVA_3, AVALIACAO FROM QUESTAO WHERE ID = " + id);
			while(rs.next()){
				questao.setId(rs.getInt("ID"));
				questao.setPergunta(rs.getString("PERGUNTA"));
				questao.setResposta(rs.getString("RESPOSTA"));
				questao.setAlternativa_1(rs.getString("ALTERNATIVA_1"));
				questao.setAlternativa_2(rs.getString("ALTERNATIVA_2"));
				questao.setAlternativa_3(rs.getString("ALTERNATIVA_3"));
				questao.setAvaliacao(selecionaAvaliacao(rs.getInt("AVALIACAO")));
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao selecionar questao!");
		}
		return questao;
	}
	
	public Collection listaQuestoes(int id){
	    int pos = 0;
	    ResultSet rs;
		List lista = new Vector();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			if(id == 0){
			    rs = smt.executeQuery(
			        "SELECT ID, PERGUNTA, RESPOSTA, ALTERNATIVA_1, ALTERNATIVA_2, ALTERNATIVA_3, AVALIACAO FROM QUESTAO ORDER BY PERGUNTA");
			} else {
			    rs = smt.executeQuery(
		        "SELECT ID, PERGUNTA, RESPOSTA, ALTERNATIVA_1, ALTERNATIVA_2, ALTERNATIVA_3, AVALIACAO FROM QUESTAO WHERE AVALIACAO = " + id + " ORDER BY PERGUNTA");
			}
			while(rs.next()){
			    QuestaoBean questao = new QuestaoBean();
			    questao.setId(rs.getInt("ID"));
				questao.setPergunta(rs.getString("PERGUNTA"));
				questao.setResposta(rs.getString("RESPOSTA"));
				questao.setAlternativa_1(rs.getString("ALTERNATIVA_1"));
				questao.setAlternativa_2(rs.getString("ALTERNATIVA_2"));
				questao.setAlternativa_3(rs.getString("ALTERNATIVA_3"));
				questao.setAvaliacao(selecionaAvaliacao(rs.getInt("AVALIACAO")));
				lista.set(pos, questao);
				pos++;
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao listar questoes!");
		}
		return lista;
	}
	
	public void inseriSelecao(SelecaoBean selecao){
		try{
			Connection con = ConectaFB.getConexao();
			PreparedStatement psmt = con.prepareStatement(
					"INSERT INTO SELECAO (ID, NOME, ASSUNTO, DATA_INICIO, DATA_TERMINO, AVALIADOR ) VALUES (?,?,?,?,?,?)");
			psmt.setInt(1, selecao.getId());
			psmt.setString(2, selecao.getNomeSelecao());
			psmt.setString(3, selecao.getAssunto());
			psmt.setDate(4, new Date(selecao.getDataInicio().getTime()));
			psmt.setDate(5, new Date(selecao.getDataTermino().getTime()));
			psmt.setInt(6, selecao.getAvaliador().getId());
			psmt.executeUpdate();
			psmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao incluir selecao!");
		}
	}
	
	public SelecaoBean selecionaSelecao(int id){
		SelecaoBean selecao = new SelecaoBean();
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			ResultSet rs = smt.executeQuery(
			        "SELECT ID, NOME, ASSUNTO, DATA_INICIO, DATA_TERMINO, AVALIADOR FROM SELECAO WHERE ID = " + id);
			while(rs.next()){
				selecao.setId(rs.getInt("ID"));
				selecao.setNomeSelecao(rs.getString("NOME"));
				selecao.setAssunto(rs.getString("ASSUNTO"));
				selecao.setDataIncio(rs.getDate("DATA_INICIO"));
				selecao.setDataTermino(rs.getDate("DATA_TERMINO"));
				selecao.setAvaliador(selecionaAvaliador(rs.getInt("AVALIADOR")));
				selecao.setAvaliacoes(listaAvaliacoes("SELECAO",rs.getInt("ID")));
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao selecionar selecao!");
		}
		return selecao;
	}
	
	public Collection listaSelecoes(int id){
		int pos = 0;
	    List lista = new Vector();
		ResultSet rs;
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			if(id == 0){
			    rs = smt.executeQuery(
		        	"SELECT ID, NOME, ASSUNTO, DATA_INICIO, DATA_TERMINO, AVALIADOR FROM SELECAO ORDER BY ASSUNTO");
			} else {
			    rs = smt.executeQuery(
			        "SELECT ID, NOME, ASSUNTO, DATA_INICIO, DATA_TERMINO, AVALIADOR FROM SELECAO WHERE AVALIADOR = " + id + "ORDER BY DATA_TERMINO");
			}
			while(rs.next()){
				SelecaoBean selecao = new SelecaoBean();
				selecao.setId(rs.getInt("ID"));
				selecao.setNomeSelecao(rs.getString("NOME"));
				selecao.setAssunto(rs.getString("ASSUNTO"));
				selecao.setDataIncio(rs.getDate("DATA_INICIO"));
				selecao.setDataTermino(rs.getDate("DATA_TERMINO"));
				selecao.setAvaliador(selecionaAvaliador(rs.getInt("AVALIADOR")));
				selecao.setAvaliacoes(listaAvaliacoes("SELECAO", rs.getInt("ID")));
				lista.set(pos, selecao);
				pos++;
			}
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao listar selecoes!");
		}
		return lista;
	}
	
	public void apagaRegistro(String tabela, int id){
		try{
			Connection con = ConectaFB.getConexao();
			Statement smt = con.createStatement();
			smt.executeUpdate("DELETE FROM " + tabela + " WHERE SINTAXE = " + id);
			smt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
			System.err.println("Falha ao apagar o registro nº " + id + " da tabela " + tabela);
		}
	}
}

Preciso muito desta ajuda, para terminar este projeto este ano. Falou galera.

Francisco

a melhor forma é debugando mesmo…
se deu outOfMemory, ou vc entrou em loop infinito, ou sua consulta retorna muitos registros, o que sobrecarrega a memoria.se for isso, tente paginar o resultado, trazendo so o que vai ser mostrado na tela por vez.

[]'s

ok, vou fazer isso. Vou ter que alterar um cadin de coisa.

Valeu.
Francisco