TypeScript के लिए ORM: Prisma, TypeORM और Drizzle की तुलना — कोड उदाहरण

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

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

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

TypeScript के लिए ORM: तुलना और उदाहरण

\n\n

आधुनिक TypeScript वेब डेवलपमेंट में, सही ORM (Object-Relational Mapping) का चयन विकास को काफी तेज कर सकता है और एप्लिकेशन की विश्वसनीयता बढ़ा सकता है। ORM आपको ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण के माध्यम से डेटाबेस के साथ काम करने की अनुमति देता है, जिससे कच्चे SQL क्वेरी लिखने से बचा जा सकता है। इस लेख में हम TypeScript के लिए तीन सबसे लोकप्रिय ORM: Prisma, TypeORM और Drizzle की तुलना करेंगे, साथ ही उनके उपयोग के उदाहरण भी देखेंगे।

\n\n

1. Prisma — आधुनिक मानक

\n\n

Prisma एक नई पीढ़ी का ORM है जो डेवलपर सुविधा और प्रदर्शन पर ध्यान केंद्रित करता है। यह अपनी स्वयं की स्कीमा विवरण भाषा (Prisma Schema) का उपयोग करता है और पूरी तरह से टाइप किया गया क्लाइंट उत्पन्न करता है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • TypeScript प्रकारों की स्वचालित पीढ़ी
  • \n
  • क्वेरी के लिए सहज ज्ञान युक्त API
  • \n
  • अंतर्निहित डेटा माइग्रेशन (Prisma Migrate)
  • \n
  • PostgreSQL, MySQL, SQLite, MongoDB और अन्य का समर्थन
  • \n
\n\n

TypeScript में कोड उदाहरण:

\n
// schema.prisma\nmodel User {\n  id    Int     @id @default(autoincrement())\n  name  String\n  email String  @unique\n  posts Post[]\n}\n\nmodel Post {\n  id        Int     @id @default(autoincrement())\n  title     String\n  content   String?\n  authorId  Int\n  author    User    @relation(fields: [authorId], references: [id])\n}\n\n// कोड में उपयोग\nimport { PrismaClient } from '@prisma/client';\n\nconst prisma = new PrismaClient();\n\nasync function getUsersWithPosts() {\n  const users = await prisma.user.findMany({\n    include: { posts: true }\n  });\n  return users;\n}\n
\n\n

2. TypeORM — TypeScript के लिए क्लासिक

\n\n

TypeORM एक परिपक्व ORM है जो Active Record और Data Mapper दोनों पैटर्न का समर्थन करता है। यह TypeScript के साथ घनिष्ठ रूप से एकीकृत है और मॉडल को परिभाषित करने के लिए डेकोरेटर का उपयोग करता है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • डेकोरेटर और क्लास का समर्थन
  • \n
  • दो दृष्टिकोण: Active Record और Data Mapper
  • \n
  • विस्तारित माइग्रेशन और ईवेंट सब्सक्रिप्शन
  • \n
  • कई DBMS का समर्थन
  • \n
\n\n

TypeScript में कोड उदाहरण:

\n
import { Entity, PrimaryGeneratedColumn, Column, OneToMany, createConnection } from "typeorm";\n\n@Entity()\nexport class User {\n    @PrimaryGeneratedColumn()\n    id: number;\n\n    @Column()\n    name: string;\n\n    @Column({ unique: true })\n    email: string;\n\n    @OneToMany(() => Post, post => post.user)\n    posts: Post[];\n}\n\n@Entity()\nexport class Post {\n    @PrimaryGeneratedColumn()\n    id: number;\n\n    @Column()\n    title: string;\n\n    @Column({ nullable: true })\n    content: string;\n\n    @ManyToOne(() => User, user => user.posts)\n    user: User;\n}\n\n// उपयोग\nasync function getUsersWithPosts() {\n    const connection = await createConnection();\n    const userRepository = connection.getRepository(User);\n    return await userRepository.find({ relations: ["posts"] });\n}\n
\n\n

3. Drizzle — हल्का और उच्च प्रदर्शन वाला

\n\n

Drizzle एक अपेक्षाकृत नया ORM है जो प्रदर्शन और न्यूनतम बंडल आकार पर जोर देता है। यह SQL-जैसे सिंटैक्स का उपयोग करता है और कोड जनरेशन की आवश्यकता नहीं होती है।

\n\n

मुख्य विशेषताएं:

\n
    \n
  • न्यूनतम आकार और उच्च गति
  • \n
  • डेकोरेटर के बिना TypeScript का मूल समर्थन
  • \n
  • SQL-जैसा API (query builder)
  • \n
  • SQL डेटाबेस के साथ संगतता
  • \n
\n\n

TypeScript में कोड उदाहरण:

\n
import { drizzle } from 'drizzle-orm/better-sqlite3';\nimport { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';\nimport Database from 'better-sqlite3';\n\nconst sqlite = new Database('test.db');\nconst db = drizzle(sqlite);\n\n// स्कीमा परिभाषा\nconst users = sqliteTable('users', {\n    id: integer('id').primaryKey(),\n    name: text('na                    

अनुशंसाएँ