TypeScript के लिए ORM: तुलना और उदाहरण
आधुनिक TypeScript वेब डेवलपमेंट में, सही ORM (Object-Relational Mapping) का चयन एक महत्वपूर्ण निर्णय है जो प्रोजेक्ट की आर्किटेक्चर, प्रदर्शन और रखरखाव में आसानी को प्रभावित करता है। ORM आपको SQL क्वेरी को अमूर्त करते हुए प्रोग्रामिंग भाषा की वस्तुओं के माध्यम से डेटाबेस के साथ काम करने की अनुमति देता है। इस लेख में, हम TypeScript के लिए तीन सबसे लोकप्रिय ORM पर चर्चा करेंगे: TypeORM, Prisma और MikroORM। आप उनकी ताकत और कमजोरियों के बारे में जानेंगे, साथ ही प्रत्येक के लिए कोड उदाहरण भी देखेंगे।
1. TypeORM
TypeORM TypeScript और JavaScript के लिए सबसे पुराने और सबसे परिपक्व ORM में से एक है। यह Active Record और Data Mapper पैटर्न के साथ-साथ PostgreSQL, MySQL, SQLite, MongoDB और अन्य सहित कई डेटाबेस का समर्थन करता है।
TypeORM की विशेषताएं:
- एंटिटी परिभाषित करने के लिए डेकोरेटर का समर्थन
- लचीले संबंध: OneToOne, OneToMany, ManyToMany
- माइग्रेशन और स्कीमा सिंक्रोनाइज़ेशन
- सब्सक्रिप्शन और लाइफसाइकिल इवेंट का समर्थन
- जटिल क्वेरी के लिए Query Builder
TypeORM के साथ कोड उदाहरण:
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, createConnection } from "typeorm";
@Entity()export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number;
@Column() name: string;
@Column() email: string;}
async function main() { await createConnection({ type: "postgres", host: "localhost", port: 5432, username: "test", password: "test", database: "test", entities: [User], synchronize: true, });
const user = new User(); user.name = "इवान"; user.email = "ivan@example.com"; await user.save();
const users = await User.find(); console.log(users);}लाभ: बड़ा समुदाय, कई ट्यूटोरियल, MongoDB का समर्थन। नुकसान: जटिल कॉन्फ़िगरेशन, lazy loading में समस्याएं, कभी-कभी गैर-सहज API।
2. Prisma
Prisma एक आधुनिक ORM है जो डेटाबेस के साथ काम करने के तरीके को पुनर्परिभाषित करता है। पारंपरिक ORM के बजाय, यह तीन घटक प्रदान करता है: Prisma Client (स्वचालित रूप से उत्पन्न टाइप-सुरक्षित क्लाइंट), Prisma Migrate (माइग्रेशन सिस्टम) और Prisma Studio (ग्राफिकल इंटरफ़ेस)।
Prisma की विशेषताएं:
- डिक्लेरेटिव डेटा स्कीमा (schema.prisma)
- स्कीमा पर आधारित पूर्ण टाइपिंग - कोई मैन्युअल प्रकार नहीं
- क्लाइंट का स्वचालित जनरेशन
- ट्रांज़ैक्शन और पेजिनेशन का समर्थन
- GraphQL (Nexus, TypeGraphQL) के साथ एकीकरण
Prisma के साथ कोड उदाहरण:
// schema.prismamodel User { id Int @id @default(autoincrement()) name String email String @unique posts Post[]}
model Post { id Int @id @default(autoincrement()) title String content String? authorId Int author User @relation(fields: [authorId], references: [id])}
// main.tsimport { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() { const user = await prisma.user.create({ data: { name: 'मारिया', email: 'maria@example.com', posts: { create: { title: 'मेरा पहला पोस्ट' } } }, include: { posts: true } });
const users = await prisma.user.findMany({ include: { posts: true } }); console.log(users);}
main() .catch(e => console.error(e)) .finally(() => prisma.$disconnect());लाभ: बेहतरीन टाइपिंग, सरल सिंटैक्स, उत्कृष्ट दस्तावेज़ीकरण। नुकसान: स्कीमा पर निर्भरता, कस्टम क्वेरी में कठिनाई, अधिक मेमोरी खपत।
3. MikroORM
MikroORM एक माइक्रो-ORM है, जो Doctrine