GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Múltiplos Select JPA/Hibernate?

hibernate
jsf
jpa
Tags: #<Tag:0x00007f37ddaf3d10> #<Tag:0x00007f37ddaf3b08> #<Tag:0x00007f37ddaf38b0>

#1

Sou iniciante em Java e novo por aqui também. Estou desenvolvendo meu TCC e me deparei com o seguinte problema, no momento em que aciono algum botão do meu sistema que chama alguma consulta o resultado no Console aparece com vários Selects… Segue exemplo:

Hibernate:

select
    cliente0_.ID as ID1_1_,
    cliente0_.BAIRRO as BAIRRO2_1_,
    cliente0_.DTCADASTRO as DTCADAST3_1_,
    cliente0_.CIDADE as CIDADE4_1_,
    cliente0_.COMPLEMENTO as COMPLEME5_1_,
    cliente0_.CPF as CPF6_1_,
    cliente0_.EMAIL as EMAIL7_1_,
    cliente0_.ESTADO as ESTADO8_1_,
    cliente0_.LOGADOURO as LOGADOUR9_1_,
    cliente0_.DTNASCIMENTO as DTNASCI10_1_,
    cliente0_.NOME as NOME11_1_,
    cliente0_.NUMERO as NUMERO12_1_,
    cliente0_.RG as RG13_1_,
    cliente0_.TELEFONE as TELEFON14_1_ 
from
    petschool.CLIENTE cliente0_ 
order by
    cliente0_.NOME

Hibernate:

select
    cliente0_.ID as ID1_1_,
    cliente0_.BAIRRO as BAIRRO2_1_,
    cliente0_.DTCADASTRO as DTCADAST3_1_,
    cliente0_.CIDADE as CIDADE4_1_,
    cliente0_.COMPLEMENTO as COMPLEME5_1_,
    cliente0_.CPF as CPF6_1_,
    cliente0_.EMAIL as EMAIL7_1_,
    cliente0_.ESTADO as ESTADO8_1_,
    cliente0_.LOGADOURO as LOGADOUR9_1_,
    cliente0_.DTNASCIMENTO as DTNASCI10_1_,
    cliente0_.NOME as NOME11_1_,
    cliente0_.NUMERO as NUMERO12_1_,
    cliente0_.RG as RG13_1_,
    cliente0_.TELEFONE as TELEFON14_1_ 
from
    petschool.CLIENTE cliente0_ 
order by
    cliente0_.NOME

As vezes me retorna até 6 select em apenas uma consulta. Como sou iniciante, gostaria de saber se é normal isso, pois nas vídeo aulas que vi até o momento retorna apenas uma. Caso necessário encaminho parte do código fonte. Segue imagem também…


#2

Como você mesmo já deve ter percebido, isso não é eficiente, degrada a perfomance.

É mais prático usar SQL diretamente, mas se quer usar JPA/Hibernate, vai ter que aprender a utilizar HQL ou Criteria. Com esses recursos intermediários você vai aplicar “fetch join” nos relacionamentos com lazy, assim o hibernate vai enfim gerar um único SQL de forma eficiente para atender uma consulta específica.

Pesquise sobre n+1 select hibernate. Exemplo: http://stackoverflow.com/questions/32453989/what-is-the-solution-for-the-n1-issue-in-hibernate


#3

Cara, bacana… achei um link legal sobre esse problema através da sua indicação.
Vou estudar um pouco mais sobre o JPA e essas outras formas de consultas…

Muito obrigado !!!


#4

eu tô querendo saber como que faz pra exibir esse select no console , ensina ai por favor http://www.guj.com.br/uploads/default/original/3X/e/6/e6023c9c379d6c2416bf95b346850147e57e708d.png


#5

Pesquisou?
Se você digitasse “jpa show sql” no Google, você encontraria o que queria…

Como sou legal, ta aqui

<property name = "hibernate.show_sql" value = "true" />

Demorei 7 segundos pra achar isso


#6

não trate como [dev] quem te trata como [prod] kkkkkkkk