Et bien il y a un peu de tout.
Par exemple en eager loading si tu fais une jointure entre les deux tables, il va effectuer la jointure et rapatrier 100% des enregistrements.
En lazy loading si tu fais la jointure entre les deux tables il ne va récupérer les données de la jointure que lorsque tu en as besoin, donc avec autant de select perso_comp que nécessaire.
Où encore des lazy loading intelligent comme le fait par exemple DataMapper, ou il va voir ce dont tu as besoin et faire un select comp id_perso in (bla bla blabla)
Et donc à toi de voir ce que tu utilises selon le contexte
Par exemple en eager loading si tu fais une jointure entre les deux tables, il va effectuer la jointure et rapatrier 100% des enregistrements.
En lazy loading si tu fais la jointure entre les deux tables il ne va récupérer les données de la jointure que lorsque tu en as besoin, donc avec autant de select perso_comp que nécessaire.
Où encore des lazy loading intelligent comme le fait par exemple DataMapper, ou il va voir ce dont tu as besoin et faire un select comp id_perso in (bla bla blabla)
Et donc à toi de voir ce que tu utilises selon le contexte