2
respostas

Duvida sobre LAZY

Sobre o LAZY, para que ele serve não entendi muito bem

2 respostas

O comportamento LAZY serve para que o banco não carregue as informações dos relacionamentos. Por exemplo uma conta tem diversas movimentações, mas se eu quiser trazer somente as informações da conta sem as movimentações, para que seja mais rápido o carregamento das informações, posso utilizar o lazy assim ele não trará as informações das movimentações apenas da conta. Em geral utilizamos o LAZY quando queremos apenas as informações do objeto que buscamos e não de seus relacionamentos, pode ser para a busca ser mais rápida ou o carregamento da página não demorar tanto.

Dayson o comportamento Lazy é exatamente como nosso amigo Marcio falou, por padrão ele é preguiçoso(significado de lazy em português), então ele só ira nos trazer as informações referentes ao objeto que estamos buscando, caso esse objeto tenha filhos os mesmos não irão ser trazidos:

public class Pessoa (
    // demais atributos
    @ManyToOne(fetch = FetchType.LAZY)
    private Endereco endereco;
)

Sempre que fizemos alguma jpql select a from Pessoa a iremos ter os campos da tabela pessoa como resultado da SQL, o nosso objeto endereco não irá possuir dados, a busca no endereco só será feita se fizermos algo como:

Pessoa p1 = new Pessoa(1);
p1.getEndereco();

Nesse caso ai sim a SQL irá fazer a busca em ambas as tabelas, pois nesse caso estamos precisando das informações do endereço.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software