1
resposta

Porque o método find do EntityManager carregou o relacionamento lazy?

Por acaso o relacionamento lazy foi carregado porque o EntityManager é produzido pelo CDI com escopo @RequestScoped, fazendo com que o EntityManager permaneça aberto até o response do JSF? Dessa forma a lista de autores é carregada na fase INVOKE_APPLICATION do JSF na atribuição do livro, que processa a lista enquanto o EntityManager ainda está aberto? Bom foi o que eu entendi, porque pelo que seu o método find por si só não carrega a lista, a lista deve ser acessada enquanto o EntityManager está aberto, estou correto?

1 resposta

O carregamento Lazy é um conceito em que atrasamos o carregamento do objeto até o ponto em que precisamos dele. Carregamento Lazy é apenas um nome sofisticado dado ao processo de inicializar uma classe quando ela é realmente necessária.

na fase INVOKE_APPLICATION, o JSF precisou das informações sobre autores para renderizar a view, logo o relacionamento Lazy foi carregado nesse trecho:

public void carregar(Livro livro) {
    System.out.println("Carregando livro");
    this.livro = this.livroDao.buscaPorId(livro.getId());
}