Recuperar valor de objeto

5 respostas
E

Boa tarde,

Supondo que eu tenho uma classe Carro (por exemplo), com dois atributos id e nome.

Caso eu tenha o número do id é possível recuperar o nome?
Por exemplo, tenho os registros abaixo. Se quisesse recuperar o nome do carro com id = 3.

1 - Astra
2 - Gol
3 - Uno
4 - Fusca

Consigo isso apenas via SQL?

Obrigado pela atenção…

5 Respostas

robinsonbsilva

Jovem que estrutura de dados você está usando para armazenar seus objetos?

sh3lld3r

edit:
Me desculpe, li atentamente a sua pergunta, não é exclusivo do SQL, existem outras formas. Citadas nos replys abaixo

robinsonbsilva

Jovem, só complementando. Se estiver buscando em em BD com certeza, agora se estiver armazenando em memória, usando Collection também dá, mas veja qual tipo atenderá suas necessidades.(ArrayList, Hash…)

bzy

Para carregar um registro do banco para uma classe java, você precisa usar ORM (Mapeamento Objeto / Relacional), exemplo o Hibernate.

Com ele você faria (depois de configurado e mapeado as entidades do banco de dados) algo assim:

Session sessao = HibernateUtility.getSession();
Carro c = (Carro) sessao.get(Carro.class, codigoIDCarro);
Lavieri
engfelipeoliveira:
Boa tarde,

Supondo que eu tenho uma classe Carro (por exemplo), com dois atributos id e nome.

Caso eu tenha o número do id é possível recuperar o nome?
Por exemplo, tenho os registros abaixo. Se quisesse recuperar o nome do carro com id = 3.

1 - Astra
2 - Gol
3 - Uno
4 - Fusca

Consigo isso apenas via SQL?

Obrigado pela atenção...

Bom como o sergio acabou de me dar uma luz, para esse mesmo problema que vc esta tendo... vai ai minha solução...

1° criar uma Interface chamada filter
public interface Filter<T> {
	public boolean match (T object);
}
2° criar uma classe que aplique o filtro
public class CollectionUtils {
	public static <T> Collection<T> filter(Collection <T> candidates, Filter<T> filter) {
		for (Iterator it = candidates.iterator(); it.hasNext(); )
			if (!filter.match(it.next()))
				it.remove(); //se não passar pelo filtro é removido da lista
		return candidates;
	}
}
3° criar uma coleção para seus objetos (vc pode consultar a lista de um banco, ou de onde for ^^)
List<Carro> carros = new ArrayList<Carro>();
carros.add(new Carro(1,"Astra");
carros.add(new Carro(2,"Gol");
carros.add(new Carro(3,"Uno");
carros.add(new Carro(4,"Fusca");
carros.add(new Carro(5,"Palio");
carros.add(new Carro(6,"Parati");
4° por fim, vc pode FILTRAR a lista como quiser (Lembre-se, filtrar não é consultar, o filtro remove os itens que não esta no filtro, se quiser continuar com a lista original, terá que fazer clone da lista, por isso sempre envio "carros.clone()" no lugar de "carros")
//Filtro para ID = 3
Filter<Carro> apenasId3 = new Filter<Carro> {
	public boolean match(Carro carro) {
		return carro.getId() == 3;
	}
};
//Filtro para carros que iniciam com "P"
Filter<Carro> iniciaComP = new Filter<Carro> {
	public boolean match(Carro carro) {
		return carro.getNome().toLowerCase().startWith("p");
	}
};

//Estou enviado carros.clone() no lugar de carros, 
//apenas pq quero manter a lista original, para realizar mais de 1 filtro
for(Carro carro: CollectionUtils.filter(carros.clone(), iniciaComP))
	System.out.println(carro.getNome()); //so aparece os carros que inicam com p

for(Carro carro: CollectionUtils.filter(carros.clone(), apenasId3))
	System.out.println(carro.getNome()); //so aparece os carros com ID = 3
Criado 28 de janeiro de 2009
Ultima resposta 28 de jan. de 2009
Respostas 5
Participantes 5