JavaScript (Node.js) के लिए ORM: तुलना और उदाहरण
आधुनिक Node.js वेब डेवलपमेंट में, डेटाबेस (DB) के साथ इंटरैक्शन एक प्रमुख कार्य है। शुद्ध SQL कोड का उपयोग प्रभावी हो सकता है, लेकिन यह अक्सर दोहराव, त्रुटियों और रखरखाव में कठिनाइयों का कारण बनता है। यहाँ ORM (Object-Relational Mapping) मदद करते हैं - ये उपकरण हैं जो आपको DB तालिकाओं के साथ सामान्य JavaScript ऑब्जेक्ट्स की तरह काम करने की अनुमति देते हैं। इस लेख में, हम Node.js के लिए तीन सबसे लोकप्रिय ORM: Sequelize, TypeORM और Prisma पर विचार करेंगे, उनकी विशेषताओं की तुलना करेंगे और व्यावहारिक उदाहरण देंगे।
ORM क्या है और इसकी आवश्यकता क्यों है?
ORM (Object-Relational Mapping) एक तकनीक है जो रिलेशनल डेटाबेस को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा से जोड़ती है। SQL क्वेरी लिखने के बजाय, आप ऑब्जेक्ट्स और उनके मेथड्स में हेरफेर करते हैं। इसके कई लाभ हैं:
- DB से एब्स्ट्रैक्शन: आप बिज़नेस लॉजिक को बदले बिना PostgreSQL, MySQL, SQLite के बीच आसानी से स्विच कर सकते हैं।
- सुरक्षा: ORM स्वचालित रूप से डेटा को एस्केप करता है, SQL इंजेक्शन से बचाता है।
- सुविधा: कम बॉयलरप्लेट कोड, स्वचालित माइग्रेशन, डेटा वैलिडेशन।
- संबंधों का समर्थन: संबंधों की सरल परिभाषा (एक-से-एक, एक-से-अनेक, अनेक-से-अनेक)।
1. Sequelize
Sequelize Node.js के लिए सबसे पुराने और सबसे परिपक्व ORM में से एक है। यह PostgreSQL, MySQL, MariaDB, SQLite और Microsoft SQL Server का समर्थन करता है। Sequelize ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण का उपयोग करता है और प्रॉमिस पर आधारित है।
मुख्य विशेषताएं:
- माइग्रेशन और सीडर्स (टेस्ट डेटा भरना) की लचीली प्रणाली।
- ट्रांजेक्शन, रॉ क्वेरी और हुक (मॉडल लाइफसाइकिल) का समर्थन।
- बड़ा समुदाय और कई तैयार समाधान।
कोड उदाहरण (Node.js):
const { Sequelize, DataTypes } = require('sequelize');
// DB से कनेक्शनconst sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'postgres'});
// मॉडल परिभाषाconst User = sequelize.define('User', { name: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, unique: true }});
// रिकॉर्ड बनानाasync function createUser() { await sequelize.sync(); // मॉडल को DB से सिंक करना const user = await User.create({ name: 'इवान', email: 'ivan@example.com' }); console.log('उपयोगकर्ता बनाया गया:', user.toJSON());}
createUser().catch(console.error);2. TypeORM
TypeORM एक ORM है जो TypeScript पर ध्यान केंद्रित करके बनाया गया है, लेकिन शुद्ध JavaScript के साथ भी काम करता है। यह Sequelize के समान डेटाबेस का समर्थन करता है, साथ ही MongoDB (प्रयोगात्मक मोड के माध्यम से)। TypeORM डेकोरेटर (TypeScript के लिए) और Active Record या Data Mapper दृष्टिकोण का उपयोग करता है।
मुख्य विशेषताएं:
- ऑटो-कम्प्लीशन और टाइप चेकिंग के साथ TypeScript का पूर्ण समर्थन।
- दो पैटर्न: Active Record (मॉडल पर मेथड) और Data Mapper (रिपॉजिटरी)।
- एंटिटी में बदलाव के आधार पर स्वचालित माइग्रेशन।
कोड उदाहरण (Node.js + TypeScript):
import { Entity, PrimaryGeneratedColumn, Column, createConnection } from "typeorm";
@Entity()export class User { @PrimaryGeneratedColumn() id: number;
@Column() name: string;
@Column({ unique: true }) email: string;}
// उपयोगasync function main() { const connection = await createConnection({ type: "postgres", host: "localhost", database: "test", entities: [User], synchronize: true, // स्वचालित तालिका निर्माण (प्रोडक्शन के लिए नहीं!) });
const user = new User(); user.name = "मारिया"; user.email = "maria@example.com"; await