Qu'est-ce que GORM et pourquoi en a-t-on besoin ?
\n\nGORM est une bibliothèque ORM (Object-Relational Mapping) puissante et populaire pour le langage Go. Elle offre aux développeurs un moyen pratique d'interagir avec les bases de données relationnelles (PostgreSQL, MySQL, SQLite, SQL Server, etc.) en utilisant une approche orientée objet en Go.
\n\nPourquoi GORM est-il nécessaire ?
\n- \n
- Automatisation des CRUD : GORM prend en charge l'écriture de code SQL standard pour la création, la lecture, la mise à jour et la suppression d'enregistrements. \n
- Migrations de schéma : Permet de créer et de mettre à jour automatiquement les tables de la base de données à partir de vos structures Go. \n
- Relations entre tables : Simplifie le travail avec les relations "un à plusieurs", "plusieurs à plusieurs" et "un à un". \n
- Sécurité : Protection intégrée contre les injections SQL via des requêtes paramétrées. \n
- Performances : Prend en charge le chargement paresseux (Lazy Loading), le préchargement (Eager Loading) et la mise en cache. \n
- Communauté : Une immense communauté, de nombreux plugins et extensions. \n
Installation de GORM
\n\nGORM s'installe de manière standard pour les paquets Go. Assurez-vous d'avoir Go installé (version 1.18+).
\n\ngo get -u gorm.io/gorm\ngo get -u gorm.io/driver/sqlite # Pour SQLite\ngo get -u gorm.io/driver/mysql # Pour MySQL\ngo get -u gorm.io/driver/postgres # Pour PostgreSQL\ngo get -u gorm.io/driver/sqlserver # Pour SQL Server\n\nRemarque : Contrairement à Python (pip) ou Node.js (npm), Go n'a pas de gestionnaire de paquets unique. La commande go get télécharge le code source et le compile dans votre projet.
Démarrage rapide avec un exemple de code
\n\nCréons une application simple pour gérer des utilisateurs en utilisant SQLite.
\n\npackage main\n\nimport (\n "fmt"\n "gorm.io/driver/sqlite"\n "gorm.io/gorm"\n)\n\n// User — modèle de données correspondant à la table dans la base de données\ntype User struct {\n ID uint `gorm:"primaryKey"`\n Name string `gorm:"size:100;not null"`\n Email string `gorm:"uniqueIndex;size:255"`\n Age int\n}\n\nfunc main() {\n // 1. Connexion à la base de données\n db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})\n if err != nil {\n panic("échec de la connexion à la base de données")\n }\n\n // 2. Automigration — création de la table\n db.AutoMigrate(&User{})\n\n // 3. Création d'un enregistrement (Create)\n user := User{Name: "Ivan Petrov", Email: "ivan@example.com", Age: 30}\n result := db.Create(&user)\n if result.Error != nil {\n fmt.Println("Erreur de création :", result.Error)\n }\n fmt.Printf("Utilisateur créé avec l'ID : %d\\n", user.ID)\n\n // 4. Lecture d'un enregistrement (Read)\n var readUser User\n db.First(&readUser, user.ID) // Recherche par clé primaire\n fmt.Printf("Utilisateur trouvé : %+v\\n", readUser)\n\n // 5. Mise à jour d'un enregistrement (Update)\n db.Model(&readUser).Update("Age", 31)\n fmt.Printf("Âge mis à jour : %d\\n", readUser.Age)\n\n // 6. Suppression d'un enregistrement (Delete)\n db.Delete(&readUser)\n fmt.Println("Utilisateur supprimé")\n}\n\nMéthodes/fonctions principales de GORM
\n\n1. gorm.Open(dialector, config)
\nCe qu'elle fait : Établit une connexion à la base de données. Retourne une instance de *gorm.DB.
\nParamètres :
\n- \n
dialector— pilote de base de données (par exemple, sqlite.Open, mysql.Open, postgres.Open). \n config— configuration GORM (gorm.Config). \n
Exemple :
\ndb, err := gorm.Open(mysql.Open("user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Config{})\n\n2. db.AutoMigrate(models ...interface{})
\nCe qu'elle fait : Crée ou met à jour automatiquement la t
Aussi dans la bibliothèque
Bcrypt pour JavaScript (Node.js) : guide complet avec exemples
Traitement d'images en C# (.NET) : bibliothèques et exemples de code
Nodemon pour JavaScript (Node.js) : guide complet avec exemples
Génération de rapports PDF en C# (.NET) : iTextSharp, QuestPDF, PDFsharp
Tests en JavaScript (Node.js) : frameworks et outils