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
Libérer: 2024-12-10 18:13:14
original
475 Les gens l'ont consulté

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
}
Copier après la connexion

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)
Copier après la connexion

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}}]
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal