Como pegar todo o resultado do ResultSet sem ter que dar um next()

Olá
Gostaria de saber como pegar o resultao de uma consulta no banco tod de uma vez!
Este é meu código.
Estou querendo pegar todos os nomes das tabelas de uma só vez ao invés de percorrer e pegar nome a nome.

ResultSet rs = stm1.executeQuery(“select table_name from ALL_TABLES order by table_name”);

// Aqui não quero ter de percorrer uma por uma das linhas da minha consulta.
// Se tiver alguma forma de pegar todos os nomes de minhas tabelas de uma vez só, favor me informar.
while (rs.next()) {
System.out.println(rs.getString(1));
}

Pessoal tentei de várias formas até chegar aqui hoje!
Agradeço se alguém me der uma ajuda.

Não acho que haja outra forma de fazer isso.

Resultset é uma lista encadeada, portanto, você só tem como referencia o primeiro e o ultimo elementos. O próximo elemento só pode ser acessado a partir do elemento anterior. Não dá pra fazer uma referência direta.

Olá,

de acordo com a API ResultSet, não é possível retornar todos registros de uma única vez.

Interface ResultSet

Se você puder usar JPA/Hibernate você poderia fazer algo similar:

		Query sql = this.manager.createQuery("SELECT .. FROM .. ");
		try {
			lista = (ArrayList<SeuObjeto>) sql.getResultList();
		} catch (NoResultException e) {
			lista = null;
		}

Dessa maneira, você consegue trazer todos os registros (seus objetos mapeados) de uma única vez.

Abs!

[quote=newbcc] Olá,

de acordo com a API ResultSet, não é possível retornar todos registros de uma única vez.

Interface ResultSet

Se você puder usar JPA/Hibernate você poderia fazer algo similar:

		Query sql = this.manager.createQuery("SELECT .. FROM .. ");
		try {
			lista = (ArrayList<SeuObjeto>) sql.getResultList();
		} catch (NoResultException e) {
			lista = null;
		}

[/quote]

Oi,

Isso pode dar zebra se existirem muitas linhas, ou não?

Tchauzin!

newbcc Cara valeu pela resposta isto vai me ajudar muito na performance do programa que criei.
Valeu mesmo.
A e com relação quantida de linhas pense em umas 5 mil será que da problema?

Té.

Oi,

Essa thread deveria ser criada em Persistência: Hibernate, JPA, JDBC e outros

Tchauzin!

Olá,

realmente não sei dizer se para muitas linhas, no seu caso, acima de 5 mil, irá dar algum problema. Teria que fazer testes.

Se estiver desenvolvendo profissionalmente, por segurança, realize testes na sua máquina e com a base de dados de Dev/QA, caso contrário (se estiver estudando), sem problemas.

Em relação a comparação entre ResultSet e o ResultList, o quê posso garantir com certeza, por experiência, é que este último tem um desempenho superior tanto para a busca de dados na base, quanto no mapeamento de dados para os seus objetos de negócio, uma vez que o Hibernate já faz isso para você. Com o ResultSet, você teria que desenvolver as lógicas para iterar cada resultado trazido, e montar os seus objetos de negócio.

Nas aplicações que trabalho e uso essa lógica, não tive nenhum problema. Mas vale o teste.

Abs!