Pular para conteúdo

Lazy Loading

O Lazy Loading (Carregamento Preguiçoso) permite carregar dados relacionados apenas quando eles são acessados pela primeira vez, economizando recursos e memória.

Como Funciona

No BridgeFrameWork, o Lazy Loading é transparente. Você define os relacionamentos com atributos e usa tipos especiais (TLazy<T> e TLazyList<T>).

Tipos de Relacionamento

N:1 (Muitos para Um) - [BelongsTo]

Use quando sua entidade "pertence" a outra. Exemplo: Um Produto pertence a um Grupo.

[BelongsTo('ID_GRUPO')] // A coluna na tabela Produto que aponta para Grupo
FGrupo: TLazy<TGrupo>;

Uso:

// O grupo NÃO é carregado aqui (apenas o ID é lido)
LController.Load(LProduto, 1); 

// O SELECT na tabela de grupos acontece AQUI, na primeira leitura
ShowMessage(LProduto.Grupo.Value.Descricao); 

1:N (Um para Muitos) - [HasMany]

Use quando sua entidade "tem vários" filhos. Exemplo: Um Cliente tem muitos Pedidos.

[HasMany('ID_CLIENTE')] // A coluna na tabela Pedido que aponta para Cliente
FPedidos: TLazyList<TPedido>;

Uso:

LController.Load(LCliente, 1);

// O SELECT na tabela de pedidos acontece AQUI
for LPedido in LCliente.Pedidos.List do
begin
  // ...
end;

Benefícios

  1. Performance Inicial: Carregar um Cliente não carrega automaticamente todos os seus 5.000 pedidos.
  2. Economia de Memória: Objetos não usados não ocupam espaço.
  3. Simplicidade: Não é necessário escrever JOINs manuais para relacionamentos simples.