Sobes.tech
Junior — Middle

Como é implementada a inicialização atrasada de coleções no Hibernate?

sobes.tech IA

Resposta da IA

No Hibernate, a inicialização tardia (lazy loading) de coleções é implementada através de objetos proxy e envoltórios especiais de coleções. Ao carregar uma entidade com uma coleção, o Hibernate não carrega imediatamente todos os elementos da coleção, mas cria uma coleção proxy que contém uma referência à sessão e informações sobre a consulta.

Quando a coleção é usada pela primeira vez (por exemplo, ao chamar o método size() ou ao fazer uma iteração), o Hibernate executa automaticamente uma consulta à base de dados, carregando os dados reais. Isso ajuda a economizar recursos e reduzir o tempo de carregamento, especialmente ao trabalhar com grandes volumes de dados.

Exemplo:

@Entity
public class Author {
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
    private Set<Book> books;

    // getters e setters
}

Aqui, a coleção books será carregada apenas na primeira vez que for acessada, e não ao carregar o objeto Author.