JavaScript (Node.js) के लिए ORM: तुलना और उदाहरण
Node.js पर सर्वर-साइड एप्लिकेशन विकसित करते समय, डेटाबेस के साथ इंटरैक्शन एक प्रमुख कार्य है। Object-Relational Mapping (ORM) आपको शुद्ध SQL लिखने से बचाते हुए, JavaScript ऑब्जेक्ट के माध्यम से रिलेशनल डेटाबेस के साथ काम करने की अनुमति देता है। इस लेख में, हम तीन लोकप्रिय ORM: Sequelize, TypeORM और Prisma पर चर्चा करेंगे, उनकी विशेषताओं की तुलना करेंगे और व्यावहारिक उदाहरण देंगे।
1. Sequelize
Sequelize Node.js के लिए सबसे पुराने और सबसे परिपक्व ORM में से एक है। यह PostgreSQL, MySQL, MariaDB, SQLite और MSSQL को सपोर्ट करता है। यह Promises और async/await पर काम करता है।
स्थापना और कॉन्फ़िगरेशन
npm install sequelize sequelize-clinpm install pg pg-hstore # PostgreSQL के लिएमॉडल और क्वेरी का उदाहरण
const { Sequelize, DataTypes } = require('sequelize');const sequelize = new Sequelize('postgres://user:pass@localhost:5432/mydb');
// मॉडल परिभाषाconst User = sequelize.define('User', { name: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, unique: true }});
// रिकॉर्ड बनानाconst user = await User.create({ name: 'इवान', email: 'ivan@example.com' });
// फ़िल्टर के साथ खोजconst users = await User.findAll({ where: { name: 'इवान' } });
// अपडेटawait User.update({ email: 'new@example.com' }, { where: { id: 1 } });लाभ और हानियाँ
- + बड़ा समुदाय, बहुत सारा दस्तावेज़ीकरण
- + माइग्रेशन और सीड्स के लिए समर्थन
- - जटिल क्वेरी के लिए भारी सिंटैक्स
- - TypeScript के लिए अंतर्निहित समर्थन नहीं
2. TypeORM
TypeORM एक ORM है जो TypeScript पर केंद्रित है, लेकिन सामान्य JavaScript के साथ भी काम करता है। यह डेकोरेटर, Active Record और Data Mapper को सपोर्ट करता है। यह अधिकांश लोकप्रिय DBMS के साथ काम करता है।
स्थापना और कॉन्फ़िगरेशन
npm install typeorm reflect-metadatanpm install pg # PostgreSQL के लिएडेकोरेटर के साथ मॉडल का उदाहरण
import { Entity, PrimaryGeneratedColumn, Column, createConnection } from 'typeorm';
@Entity()export class User { @PrimaryGeneratedColumn() id: number;
@Column() name: string;
@Column({ unique: true }) email: string;}
// उपयोगconst connection = await createConnection();const userRepo = connection.getRepository(User);const user = await userRepo.save({ name: 'अन्ना', email: 'anna@example.com' });const users = await userRepo.find({ where: { name: 'अन्ना' } });लाभ और हानियाँ
- + TypeScript के लिए उत्कृष्ट समर्थन
- + दो दृष्टिकोण: Active Record और Data Mapper
- - शुरुआती लोगों के लिए जटिल कॉन्फ़िगरेशन
- - बड़े प्रोजेक्ट्स में धीमी माइग्रेशन
3. Prisma
Prisma एक आधुनिक ORM है जो अपनी स्वयं की स्कीमा भाषा का उपयोग करता है और एक टाइप-सुरक्षित क्लाइंट उत्पन्न करता है। इसे डेवलपर्स के लिए सबसे अधिक प्रदर्शनकारी और सुविधाजनक माना जाता है।
स्थापना और कॉन्फ़िगरेशन
npm install @prisma/clientnpx prisma initस्कीमा परिभाषा (schema.prisma)
model User { id Int @id @default(autoincrement()) name String email String @unique}क्वेरी का उदाहरण
import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();
// बनानाconst user = await prisma.user.create({ data: { name: 'ओल्गा', email: 'olga@example.com' }});
// खोजconst users = await prisma.user.findMany({ where: { name: 'ओल्गा' } });
// अपडेटawait prisma.user.update({ where: { id: 1 }, data: { email: 'new@example.com' }});लाभ और हानियाँ
- + पूर्ण टाइप-सुरक्षा