
ORM гэдэг нь Object-Relational Mapping гэсэн үгний товчлол бөгөөд монголчилбол "Объект болон Харилцан хамааралтай өгөгдлийн сангийн холбоо" гэж ойлгож болно.
Энгийнээр хэлбэл, энэ нь таны ашиглаж буй програмчлалын хэл (Java, Python, Go г.м) болон өгөгдлийн сан (MySQL, PostgreSQL г.м) хоёрын хооронд ажилладаг "орчуулагч" юм.
Өгөгдлийн сантай ажиллахад ихэвчлэн SQL (Structured Query Language) ашигладаг. Гэвч програмчлалын хэл дээр бид "Объект" (Objects/Structs) ашигладаг. Энэ хоёр өөр бүтцийг хооронд нь холбохын тулд ORM дараах үүргийг гүйцэтгэдэг:
SQL бичих шаардлагагүй: Та өөрийн сурсан хэл дээрээ (жишээ нь Go эсвэл Java) код бичихэд ORM түүнийг нь автоматаар SQL query рүү хөрвүүлж өгөгдлийн санд илгээнэ.
Өгөгдлийн бүтцийг ижилсүүлэх: Өгөгдлийн сангийн "Хүснэгт"-ийг (Table) програм доторх "Класс" эсвэл "Struct"-тай шууд холбоно.
Аюулгүй байдал: SQL Injection гэх мэт түгээмэл халдлагуудаас автоматаар хамгаалдаг.
GORM гэдэг нь Go ORM буюу Go хэлний ORM бөгөөд нүсэр SQL query бичих, өгөгдлийг гар аргаар struct руу хөрвүүлэх нь цагийг хэмнэх хамгийн хүчирхэг хэрэгсэл юм.
Auto Migration: Таны код доторх Go struct-д гарсан өөрчлөлтийг (шинэ багана нэмэх, төрөл өөрчлөх) өгөгдлийн сангийн схем рүү автоматаар шилжүүлдэг.
Associations: Has One, Has Many, Belongs To, Many To Many гэх мэт хүснэгт хоорондын нарийн хамаарлуудыг маш хялбар тохируулдаг.
Hooks: Өгөгдөл хадгалагдах, устгах, шинэчлэгдэхийн өмнө болон дараа ямар нэгэн функц (жишээ нь, нууц үг hash хийх) ажиллуулах боломжтой.
Rich Ecosystem: MySQL, PostgreSQL, SQLite, SQL Server зэрэг хамгийн түгээмэл бүх өгөгдлийн сангуудыг дэмждэг.

Go: GORM, Ent
Java: Hibernate, JPA
Python: SQLAlchemy, Django ORM
JavaScript/TypeScript: Prisma, Sequelize
"GORM-ийг ашиглаж байгаа гээд SQL сурах хэрэггүй гэсэн үг биш." Шилдэг хөгжүүлэгчид GORM-ийг хурдны төлөө ашигладаг ч, цаана нь ямар SQL ажиллаж байгааг үргэлж хянаж (Debug log ашиглан) байдаг.