Sem utilizar a OO, usamos uma query/select e
recuperamos apenas o tombo e o titulo para exibir
em uma consulta ou listagem. Usando OO, eu preciso
recuperar todos os objetos com todos os campos de
cada objeto para exibi-los?
Pergunto isso por utilizar uma base de dados com
grande quantidade de registros. Carregando todos
os objetos, vou gerar um grande trafego na rede e
não irei exibir as infomormações, além de ocupar
espaço em memória. Alguma sugestão? Dica?
Você está presumindo que irá conseguir, após uma busca no banco, objetos do tipo livro, o que não corresponde à verdade.
No seu insert vc irá “planificar” seu objeto, ao passo que na hora de recuperar vc terá em mãos um ResultSet, que é semelhante a um Iterator. E este ResultSet não tem Livros dentro, mas sim um modelo de dados ordenado em linhas e dotado de colunas ao estilo da sua tabela relacional.
Todavia, a nível de aplicação é mais fácil lidar com objetos, e por isso existem frameworks de mapeamento, alguns vc já deve ter ouvido falar.
Portanto dê uma olhada na API java na parte de ResultSet q vc resolve a sua vida,
se eu for apresentar somente dois campos do meu objeto, por exemplo, nome e idade de uma classe cliente que é composta por vários atributos (nome, idade, endereço, telefone entre outros), eu preciso recuperar todas essas informações para todos os objetos(para cada linha do ResultSet eu terei q criar um objeto com esses valores)? Não vou estar gerando um tráfego na rede desnecessário?
Como o Sombriks sugeriu, utilize um framework objeto-relacional como o Hibernate! Ele vai te ajudar em 99% dos casos… e em casos especificos como este, vc pode utilizar o ResulTransformer do Hibernate…
Você pode escrever seu proprio ResultTransformer ou utilizar alguns que já vêm com o Hibernate como o alias to bean!!
session.createSQLQuery("select cod,nom from cliente where bla bla bla").setResultTransformer( TRANSFORMER_A_SUA_ESOLHA ).list();