Javafree
Página Inicial do Fórum > Frameworks, APIs e IDE's

FetchType.LAZY não funciona



Criar novo tópico   Responder tópico


  1. fabioem
    Posts:6


    Comment Arrow

    Publicado em: 27/08/2015 15:40:56

    Senhores,
    Estou estudando JPA e tenho as seguintes Entidades: Estado e Cidade. Estado tem muitas Cidades. Mapeie compilou e rodou usando JPA e Hibernate. "@OneToMany(mappedBy="estado",fetch=FetchType.LAZY) ". Mas quando chamo um Estado ele além de me buscar todas as cidades me busca todos os estados e todas as cidades e assim por diante!!!!! Pelo que li o =FetchType.LAZY deveria ser uma busca preguiçosa e ser chamada sempre que a chamo, não entendi!!!!!!



  1. staroski
    Posts:4599


    Comment Arrow

    Publicado em: 28/08/2015 09:01:55

    [quote="fabioem"]Pelo que li o =FetchType.LAZY deveria ser uma busca preguiçosa e ser chamada sempre que a chamo, não entendi!


    O LAZY não é bem isso, na verdade ele não está trazendo todos os campos dos registros encontrados.
    Você só tem essa impressão porque pra verificar, você acaba implicitamente inicializando os campos dos objetos LAZY.


    Veja os comentários no pseudo código abaixo, talvez ajude a entender melhor:



    Então, é por isso que essa forma de carga se chama LAZY, por que o framework vai lá instancia tantos objetos quantos registros foram encontrados, mas ele não carreega todos os campos dos registros, isso poderia ser demorado
    Ao invés disso, ele te devolve um objeto preguiçoso que só tem o ID do registro dele
    Aí, quando você invoca algum método para obter o valor de um atributo desse objeto, ele vai lá rapidão e busca o valor dos campos da Cidade que tem aquele ID e inicializa os atributos

    Se você ligar o log das queries executadas, vai perceber que a primeira vez que você obtém algum atributo de um objeto LAZY, ele vai fazer uma consulta


    _________________

    Ricardo Artur Staroski, OCP-JP
    Blumenau - SC
    Faço seu trabalho Java,
    clique aqui

    Acesse http://www.guj.com.br/



  1. fabioem
    Posts:6


    Comment Arrow

    Publicado em: 30/08/2015 16:51:11



    Obrigado e grato pela resposta, entendi! Vou ligar os logs e conferir



  1. Relacionados