Melhorar perfomance de pesquisas com hibernate

Preciso de dicas do pessoal mais experientes de como eu posso melhorar minhas consultas feitas pelo hibernate.

Por exemplo:Vamos supor
Tenho uma tabela com 50 campos(cadastro básico como nome,endereço, telefone e outros campos), essa tabela tem 100 registros.
Quero procurar por uma pessoa pelo nome.

Se faço assim: from Cadastro WHERE nome = ?
Vai passar pelo 50 campos dos 100 registros = 5000 campos que o hibernate passou.

Mas se faço assim: SELECT nome FROM Cadastro WHERE nome = ?
Vai passar apenas nos 50 campos nome, só que só vai me retornar os campos nomes.

Queria fazer o seguinte, que o hibernate “passasse” apenas nos campos que preciso no WHERE por exemplo, mas se encontrar resultado me retornar o objeto inteiro.O hibernate faz isso?

Ex:Faço o select pelo nome, e tem duas pessoas com esse nome, ele passou pelos 50 campos dos nomes, e depois passa pelos campos dessas duas pessoas para pegar seus valores.

Como assim passar pelos 50 campos? O que ele vai fazer é recuperar os 50 campos dos registros onde satifaz o critério de busca (where nome = ?). Isso é um comportamento padrão do SQL Ansi (select * from cadastro where nome = ?), não concorda?

Agora se você está sofrendo com a performance nesse caso, eu te daria 3 dicas:

  • Crie indices no banco de dados de uma forma correta. Certamente isso irá ajudar muito na performance. Nesse seu caso, criando um indice pelo campo NOME iria ajudar.
  • Dependendo do caso, ative o cache de segundo nivel do hibernate pode ajudar
  • Se você tem uma operação de consulta padrão, onde os dados da tabela não mudam frequentemente, ative o cache de consulta.

Espero ter ajudado

Tabela básica com 50 campos ???

Tem coisa errada ae !

Lembra de 1ª, 2ª e 3ª forma normal lá do curso de BD ?

outra coisa, o hibernate vai “passar” pelos 50 campos ???

Tá confundindo tudo !

Coloque indice em alguns campos como nosso colega sugeriu, tipo : Nome, CPF, etc …

Estude e seja feliz.

Vimieiro

Nossa, 50?eh necessário realmente 50 campos nessa tabela ?!