Técnica utilizada pelo hibernate para fazer um select

1 resposta
A

Boa tarde a todos!

Gostaria de saber o porque estou tendo o comportamento explicado abaixo e se isso é bom ou ruim, pois, achei estranho.

Estou com uma hql assim:SELECT new br.com.pacote.vo.ConsultaVO(minhaEntidade) FROM br.com.pacote.entity.MinhaEntidade AS minhaEntidade WHERE minhaEntidade.outraEntidade = :outraEntidade
Vi aqui que as consultas que são feitas na base a partir desse hql são: uma consulta para buscar somente o identificador de todos os registros (respeitando o filtro, como o esperado). select minhaentidade0_.id as col_0_0_ from meu_schema.minha_entidade minhaentidade0_ where minhaentidade0_.id_outra_entidade=1
Repare que as condições do where são as que o usuário informou como filtro (minhaentidade0_.id_outra_entidade=1).

E com a lista de identificadores em mãos são executadas uma query por identificador encontrado. -- query executada para cada identificador encontrado select minhaentidade0_.id as id358_4_, minhaentidade0_.cd_cid_principal as cd13_358_4_, minhaentidade0_.cd_indicacao_acidente as cd2_358_4_ from meu_schema.minha_entidade minhaentidade0_ inner join meu_schema.outra_entidade outraentidade1_ on minhaentidade0_.id_outra_entidade=outra_entidade1_.id where minhaentidade0_.id=10
Observando que o identificador 10 ( minhaentidade0_.id=10 ) foi retornado do select anterior.

Sendo que o mais comum é que uma busca seja feita direto em somente um sql: select minhaentidade0_.id as id358_4_, minhaentidade0_.cd_cid_principal as cd13_358_4_, minhaentidade0_.cd_indicacao_acidente as cd2_358_4_ from meu_schema.minha_entidade minhaentidade0_ inner join meu_schema.outra_entidade outraentidade1_ on minhaentidade0_.id_outra_entidade=outra_entidade1_.id where minhaentidade0_.id_outra_entidade=1

A única vantagem desta técnica seria para consultas que raramente retornassem registros, pois, assim economizaria no JOIN.

Obrigado!

1 Resposta

A

Fiz testes aqui e percebi que este comportamento acontece pelo fato de que estou usando isso:

Mas ainda sim, gostaria de saber o porque deste comportameto.

Att

Criado 14 de maio de 2012
Ultima resposta 15 de mai. de 2012
Respostas 1
Participantes 1