Go (Golang) के लिए ORM: लोकप्रिय लाइब्रेरियों की तुलना और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go (Golang) के लिए ORM: अवलोकन, तुलना और व्यावहारिक उदाहरण



Go (Golang) अपने प्रदर्शन और सरलता के लिए प्रसिद्ध है, लेकिन डेटाबेस के साथ काम करने में अक्सर बहुत अधिक बॉयलरप्लेट SQL कोड लिखना पड़ता है। ORM (Object-Relational Mapping) लाइब्रेरीज़ Go संरचनाओं को तालिकाओं पर मैप करने को स्वचालित करके DB के साथ इंटरैक्शन को सरल बनाने के लिए डिज़ाइन की गई हैं। इस लेख में, हम Go के लिए तीन सबसे लोकप्रिय ORM: GORM, Ent और SQLBoiler पर चर्चा करेंगे, प्रमुख मापदंडों पर उनकी तुलना करेंगे और काम करने वाले उदाहरण देंगे।



1. GORM — Go के लिए सबसे लोकप्रिय ORM



GORM एक पूर्ण-विशेषताओं वाला ORM है जिसमें सक्रिय समुदाय और बड़ी संख्या में सुविधाएँ हैं: माइग्रेशन, हुक, रिलेशनशिप प्रीलोडिंग, ट्रांज़ैक्शन और बहुत कुछ। यह "convention over configuration" सिद्धांत पर काम करता है और अधिकांश लोकप्रिय DBMS (PostgreSQL, MySQL, SQLite) का समर्थन करता है।



लाभ:

  • त्वरित शुरुआत: न्यूनतम सेटिंग्स, स्वचालित तालिका निर्माण।
  • समृद्ध पारिस्थितिकी तंत्र: प्लगइन्स, लॉगर, वैलिडेटर।
  • एसोसिएशन का समर्थन (Belongs To, Has Many, Many2Many)।


कमियाँ:

  • रिफ्लेक्शन और ऑन-द-फ्लाई SQL जनरेशन के कारण औसत प्रदर्शन।
  • जटिल क्वेरीज़ (N+1 समस्या) के अनुकूलन में कठिनाइयाँ।


GORM उपयोग का उदाहरण:

package main

import ( "gorm.io/driver/sqlite" "gorm.io/gorm")

type User struct { ID uint `gorm:"primaryKey"` Name string `gorm:"size:100"` Age int}

func main() { // SQLite से कनेक्शन db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("failed to connect database") }

// ऑटोमाइग्रेशन — तालिका बनाना db.AutoMigrate(&User{})

// रिकॉर्ड बनाना db.Create(&User{Name: "इवान", Age: 30})

// पढ़ना var user User db.First(&user, 1) // ID से खोजें db.First(&user, "name = ?", "इवान") // शर्त के अनुसार खोजें

// अपडेट करना db.Model(&user).Update("Age", 31)

// हटाना db.Delete(&user)}


2. Ent — कोड जनरेशन के साथ Facebook का ORM



Ent एक आधुनिक ORM है जो Go संरचनाओं में वर्णित डेटा स्कीमा के आधार पर टाइप किया गया Go कोड जनरेट करता है। यह सख्त टाइपिंग, उत्कृष्ट प्रदर्शन और क्वेरीज़ के लिए एक शक्तिशाली ग्राफ API प्रदान करता है। Ent सक्रिय रूप से विकसित हो रहा है और बड़ी परियोजनाओं (जैसे, Facebook में ही) में उपयोग किया जाता है।



लाभ:

  • कोड जनरेशन: रनटाइम के बजाय कंपाइलेशन चरण में त्रुटियाँ।
  • स्टैटिक SQL के कारण उच्च प्रदर्शन।
  • फ़िल्टरिंग और सॉर्टिंग के साथ जटिल क्वेरीज़ बनाने के लिए सुविधाजनक API।


कमियाँ:

  • CLI टूल स्थापित करने और कोड जनरेट करने की आवश्यकता।
  • GORM की तुलना में सीखने की अवस्था अधिक कठिन।


Ent उपयोग का उदाहरण:

package main

import ( "context" "log"

"entgo.io/ent/dialect/sqlite" "github.com/yourproject/ent" "github.com/yourproject/ent/user")

func main() { // SQLite से कनेक्शन client, err := ent.Open("sqlite3", "file:ent.db?cache=shared&_fk=1") if err != nil { log.Fatalf("failed opening connection to sqlite: %v", err) } defer client.Close()

// ऑटोमाइग्रेशन if err := client.Schema.Create(context.Background()); err != nil { log.Fatalf("failed creating schema resources: %v", err) }

// उपयोगकर्ता बनाना createdUser, err := client.User.Create(). SetName("पीटर"). SetAge(25). Save(context.Background()) if err != nil { log.Fatalf("failed creating user: %v", err) }

// फ़िल्टर के साथ क्वेरी users, err := client.User.Q

अनुशंसाएँ