Dúvida consulta SQL com java

Pessoal estou com a seguinte dúvida:

Trabalho com o oracle e tenho a necessidade de realizar selects de diversos tipos, a minha dúvida é a respeito do retorno desses selects eu tenho que criar uma classe java para cada select diferente que eu fizer sendo que retornar o ResultSet não funciona pois eu fecho a conexão com o banco de dados.

Existe um outra maneira mais inteligente de retornar o resultado de consulta SQL ?

Ex: Select id, nome From Cliente -> utiliza uma classe chamada cliente.
Select a.id, b.id, a.nome, b.total From Cliente a, Pedido b -> tenho que criar uma classe para esse tipo de retorno ?

Vc tem que usar o pattern DAO(Classe) …

Exemplo.:

public class DAOCliente { 


   public int consultar(String codigo) throws SQLException  {
	
	
		PreparedStatement prepStatement = null;
	
		ResultSet rs = null;

                String telefone = "";
	
		String query = " SELECT telefone FROM cliente WHERE cod = ?";

		try 
		{
			
			conexao = ControladorConexao.abrirConexao();

			prepStatement = conexao.prepareStatement(query);

			prepStatement.setString(1, codigo);

			rs = prepStatement.executeQuery();

			while (rs.next())  {
		               telefone = rs.getString("telefone");
                    	}

		
		} catch (SQLException e) {
		
			throw new SQLException(e.getMessage());
		
		} finally {
			
			prepStatement.close();
			rs.close();
			conexao.close();
		}

	
		return telefone ;
	
	}



        public void incluir(VOCliente cliente) throws SQLException  {

		PreparedStatement prepStatement = null;

		final String sql = " INSERT INTO cliente (COD_CARGO , telefone) VALUES (? , ?) ";
		
		try {
        	
	
			conexao = ControladorConexao.abrirConexao();
			
			prepStatement = conexao.prepareStatement(sql);
			prepStatement.setString(1, cliente.getCodigo());
			prepStatement.setDate(2, cliente.getTel());
			prepStatement.executeUpdate();

		    System.out.println("  Incluído com Sucesso !  \n");
		
		} catch (SQLException e)  {
			                       
			throw new SQLException(e.getMessage());
			                         
		} finally {
			prepStatement.close();
			conexao.close();
		}
	 
	}//fim do metodo incluir 


}

Nunca trabalhe com valores soltos, isso fere ou praticamente mata o modelo OO… crie classes para representar seus dados…

ex.:

[code]public class Cliente{
private int id;
private String nome;
//gettters & setters
}

public class ClienteDAO{
public List obterTodos(){
List lista = new ArrayList();

    ResultSet res = //executa consulta
    while(res.next()){
        Cliente cli = new Cliente();
        cli.setId(res.getInt("id"));
        cli.setNome(res.getString("nome"));
        lista.add(cli);
    }
    return lista;

}

public Cliente obterPorId(int id){
Cliente cli = null;
ResultSet res = //executa consulta
if(res.first()){
cli = new Cliente();
cli.setId(res.getInt("id"));
cli.setNome(res.getString("nome");
}
return cli;
}

public void incluir(Cliente cli){
//inclui o cliente
}
}[/code]