Maison >développement back-end >Golang >Comment la fonction de préchargement de GORM peut-elle récupérer efficacement les enregistrements associés en Go ?

Comment la fonction de préchargement de GORM peut-elle récupérer efficacement les enregistrements associés en Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 18:13:14506parcourir

How Can GORM's Preload Function Efficiently Fetch Related Records in Go?

Associations ORM GORM Golang : préchargement des enregistrements associés

GORM est un ORM populaire pour Go qui simplifie les opérations de base de données. Lorsque vous travaillez avec ORM, la gestion des associations entre les enregistrements associés est essentielle. Dans ce contexte, nous explorerons comment récupérer efficacement des enregistrements associés à l'aide de la fonction de préchargement de GORM.

Considérons un scénario dans lequel nous avons deux structures : Place et Town. Chaque lieu appartient à une seule ville, et chaque ville a plusieurs lieux.

type Place struct {
  ID          int
  Name        string
  Town        Town
}

type Town struct {
  ID   int
  Name string
}

Pour récupérer tous les lieux et charger avec impatience la ville correspondante pour chaque lieu, nous pouvons utiliser la fonction Précharger :

db.Preload("Town").Find(&places)

Cette seule ligne de code exécute deux requêtes : une pour récupérer tous les lieux et une autre pour récupérer toutes les villes qui ont un lieu correspondant. La tranche de structures Place résultante aura le champ Ville rempli.

fmt.Println(places)
// Output: [{1 Place1  {1 Town1}} {2 Place2  {1 Town1}}]

Cette approche est efficace car elle évite le problème N 1, qui se produit lorsque vous devez exécuter N requêtes supplémentaires pour récupérer les enregistrements associés. Le préchargement nous permet de récupérer toutes les données nécessaires en seulement deux requêtes, ce qui le rend plus efficace pour des ensembles de données plus volumineux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn