Bom pessoal, eu acredito que muita gente já ouviu falar em Lazy Load. Aqui a gente tem até um exemplo de como as coisas funcionam. A ideia do Lazy Load é o que? É você conseguir pegar registros, mas às vezes existem dados nesses registros que você não sabe se você vai precisar deles ainda ou não. Então, para que você não gere um consumo muito grande de memória, o que você faz? Você faz a solicitação dos dados e esses dados ainda não batem no banco de dados. A gente cria uma espécie de um proxy. Esse proxy simplesmente marca. cria uma espécie de um proxy. Esse proxy, ele simplesmente marca se alguém chamar esses dados realmente, o proxy vai, bate no banco de dados e traz os dados. Se não, a gente tem um objeto fake ali pra gente, né? Dizendo que a gente tem todos os dados que a gente pensa que a gente tem, entendeu? Então, o lazy load, ele ajuda pra caramba evitar que fique batendo o banco no banco de dados o tempo inteiro né ele consegue sim trazer os dados somente quando você precisar e ainda assim você consegue trabalhar com seus objetos normalmente porque porque ele bota nos objetos que ele não carregou os dados ali um fake né e quando se chama o chamar o fake, ele chama o proxy e traz os dados ali para você, tá? Então, o lazy load é o seguinte, um objeto que não possui todos os dados que você talvez precise, mas ele sabe onde buscá-lo, tá? Então, esse é o grande ponto. Eu não tenho os dados ainda, mas se você precisar, eu rapidinho vou lá busque trago para você é basicamente isso como é que ele funciona então o seguinte lei de load carrega os objetos somente quando necessário no carregamento inicial os dados reais né esses dados são substituídos por proxies ou cena ou seja apenas representações do objeto real sem os dados. Então você tem um cara ali, você pensa que ele é sua entidade usuário, você pensa que quando você dá um GET pedidos, ele vai trazer os pedidos desse usuário, mas esse seu pedidos ali, que você pensa que é um array, ele é um proxy. No final das contas é isso. Quando os dados relacionados são acessados, o proxy carrega os dados do banco. Então, no final das contas, você sempre vai ter esses proxys. Esses proxys é que vão fazer o mapeamento fake ali pra você. Então, essa que é a ideia do Lazy Loading. Uma coisa que muitos ORMs, principalmente no passado, tinham um problema muito grande, mas direto a gente vê esse problema ainda, é o problema com o N mais 1. O que acontece? Imagina que eu quero pegar os pedidos do Wesley. Então, ele não faz o carregamento total, porque a gente está fazendo o carregamento lazy. Mas vamos imaginar que na hora que eu preciso do meu pedido, dos pedidos mesmo, o que vai acontecer? Eu tenho que fazer consultas individuais desses pedidos. E aí o que vai acontecer? Ele vai realizar uma pancada de consulta. Ou seja, ele vai ter aquele problema do N mais 1. Ou seja, para cada registro ele faz uma consulta. E aí imag, se você tem 100 pedidos, ele vai realizar 100 consultas para você. Quando você não utiliza carregamento Lazy, normalmente com apenas uma query SQL, você consegue trazer todos os dados de uma vez, sem precisar ficar fazendo um monte de consulta. sempre, mas sempre coloque um log para você ver quais são as queries SQL que o seu RM está fazendo, somente para você garantir que você não vai ter problema com N mais 1. Ter problema com N mais 1 é um problema absolutamente ridículo e que vai acabar com a performance da sua aplicação e vai fazer rapidinho com que o seu banco de dados vire um gargalo para você. Maravilha? Então, é isso aí, Lays Loading.