TypeORM কি?
TypeORM একটি ORM (Object Relational Mapping) লাইব্রেরি যা TypeScript এবং JavaScript (ES7+) এর জন্য তৈরি হয়েছে। এটি আপনাকে জাভাস্ক্রিপ্ট/টাইপস্ক্রিপ্টের ক্লাস ব্যবহার করে ডেটাবেসের টেবিলগুলির সাথে কাজ করতে সহায়তা করে, এবং আপনি SQL লিখতে না করেও ডেটাবেসে তথ্য সংরক্ষণ এবং প্রক্রিয়া করতে পারেন। TypeORM MySQL, PostgreSQL, MariaDB, SQLite, SQL Server এবং অন্যান্য রিলেশনাল ডেটাবেস সাপোর্ট করে।
TypeORM ডেটাবেসের সাথে সহজে কাজ করতে একটি অবজেক্ট-ওরিয়েন্টেড পদ্ধতি প্রদান করে এবং এটি ডেটাবেস টেবিলের সাথে সোজাসুজি ম্যাপিং করার জন্য ব্যবহারকারীদের সুবিধা দেয়। TypeORM জেনারেট করা কোড ডেটাবেস টেবিলগুলির কাঠামোর মতো দেখতে হয়, যা কোডিংয়ের সময় ডেটাবেসের কনসিস্টেন্সি নিশ্চিত করে।
TypeORM এবং Database (PostgreSQL, MySQL) সংযোগ করা
TypeORM ব্যবহার করে PostgreSQL বা MySQL ডেটাবেসের সাথে সংযোগ করার জন্য কিছু নির্দিষ্ট পদক্ষেপ অনুসরণ করতে হয়। এখানে আমরা PostgreSQL এবং MySQL ডেটাবেসের সাথে TypeORM এর সংযোগ সেটআপ করার প্রক্রিয়া দেখাবো।
১. TypeORM ইনস্টল করা
প্রথমে আপনার প্রোজেক্টে TypeORM এবং প্রয়োজনীয় ডেটাবেস ড্রাইভার ইনস্টল করতে হবে। চলুন, PostgreSQL এবং MySQL উভয়ের জন্য আলাদা কমান্ড দেখি।
PostgreSQL এর জন্য:
npm install typeorm pg reflect-metadata
এখানে:
typeorm: TypeORM লাইব্রেরি।pg: PostgreSQL ড্রাইভার।reflect-metadata: TypeScript মেটাডেটা রিফ্লেকশন সাপোর্ট।
MySQL এর জন্য:
npm install typeorm mysql2 reflect-metadata
এখানে:
mysql2: MySQL ড্রাইভার।
২. TypeORM কনফিগারেশন তৈরি করা
TypeORM ডেটাবেস সংযোগের জন্য একটি কনফিগারেশন ফাইল তৈরি করতে হবে। এই কনফিগারেশন ফাইলে ডেটাবেসের ধরণ, কনফিগারেশন এবং সংযোগের অন্যান্য তথ্য থাকবে।
PostgreSQL কনফিগারেশন:
import { DataSource } from 'typeorm';
export const AppDataSource = new DataSource({
type: 'postgres', // ডেটাবেসের টাইপ
host: 'localhost', // ডেটাবেসের হোস্ট
port: 5432, // PostgreSQL এর ডিফল্ট পোর্ট
username: 'postgres', // ইউজারনেম
password: 'your-password', // পাসওয়ার্ড
database: 'your-database-name', // ডেটাবেসের নাম
entities: [
// এখানে আপনার Entity ক্লাসগুলো যুক্ত করবেন
],
synchronize: true, // টেবিলগুলো স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ হবে
logging: true, // লগিং সক্ষম করা
});
MySQL কনফিগারেশন:
import { DataSource } from 'typeorm';
export const AppDataSource = new DataSource({
type: 'mysql', // ডেটাবেসের টাইপ
host: 'localhost', // ডেটাবেসের হোস্ট
port: 3306, // MySQL এর ডিফল্ট পোর্ট
username: 'root', // ইউজারনেম
password: 'your-password', // পাসওয়ার্ড
database: 'your-database-name', // ডেটাবেসের নাম
entities: [
// এখানে আপনার Entity ক্লাসগুলো যুক্ত করবেন
],
synchronize: true, // টেবিলগুলো স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ হবে
logging: true, // লগিং সক্ষম করা
});
এখানে:
type: ডেটাবেসের ধরণ (PostgreSQL বা MySQL)।host: ডেটাবেস সার্ভারের হোস্ট (যেমনlocalhost)।port: ডেটাবেসের পোর্ট নম্বর।username: ডেটাবেস ইউজারনেম।password: ডেটাবেস পাসওয়ার্ড।database: সংযোগ করা ডেটাবেসের নাম।entities: আপনার TypeORM Entity ক্লাসগুলির লিস্ট।synchronize:trueহলে, TypeORM ডেটাবেস টেবিল স্বয়ংক্রিয়ভাবে তৈরি বা আপডেট করবে।logging: যদিtrueথাকে, TypeORM সমস্ত SQL কোয়েরি লগ করবে।
৩. Entity তৈরি করা
TypeORM এ Entity একটি ক্লাস যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। প্রতিটি Entity একটি টেবিলের সাথে ম্যাপিং করে এবং Entity ক্লাসের প্রোপার্টি গুলি টেবিলের কলাম হিসেবে কাজ করে।
Entity উদাহরণ:
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
email: string;
}
এখানে, User Entity একটি টেবিলকে প্রতিনিধিত্ব করে যার তিনটি কলাম: id, name, এবং email।
৪. TypeORM ডেটাবেসে সংযোগ স্থাপন
TypeORM এর initialize() মেথডটি ব্যবহার করে ডেটাবেসে সংযোগ স্থাপন করতে হবে। এই মেথডটি AppDataSource কনফিগারেশন থেকে নেওয়া হয়, যা ডেটাবেসের সংযোগ বিস্তারিত ধারণ করে।
সংযোগ স্থাপন:
import 'reflect-metadata';
import { AppDataSource } from './data-source';
import { User } from './entities/User';
AppDataSource.initialize()
.then(() => {
console.log('Data Source has been initialized!');
// আপনার ডেটাবেস অপারেশন এখানে করুন
})
.catch((error) => {
console.error('Error during Data Source initialization:', error);
});
এখানে:
AppDataSource.initialize()ডেটাবেসের সংযোগ স্থাপন করে এবং যদি সবকিছু সঠিক থাকে, তাহলে একটি কনসোল লগ দেখায় "Data Source has been initialized!"।- যদি কোনো সমস্যা হয়, তবে ত্রুটি কনসোল লগ হবে।
৫. ডেটা ইনসার্ট ও রিট্রিভ করা
একবার সংযোগ স্থাপন হয়ে গেলে, আপনি ডেটাবেসে ডেটা ইনসার্ট এবং রিট্রিভ করতে পারেন। TypeORM সরাসরি Entity ক্লাসের মাধ্যমে কাজ করে, যার ফলে SQL কোয়েরি লেখার প্রয়োজন হয় না।
উদাহরণ: ডেটা ইনসার্ট
import { AppDataSource } from './data-source';
import { User } from './entities/User';
async function createUser() {
const userRepository = AppDataSource.getRepository(User);
const user = new User();
user.name = 'John Doe';
user.email = 'john@example.com';
await userRepository.save(user);
console.log('User has been saved');
}
createUser();
উদাহরণ: ডেটা রিট্রিভ
import { AppDataSource } from './data-source';
import { User } from './entities/User';
async function getUser() {
const userRepository = AppDataSource.getRepository(User);
const user = await userRepository.findOneBy({ id: 1 });
console.log(user);
}
getUser();
এখানে, userRepository.save(user) ডেটাবেসে ইউজার ডেটা ইনসার্ট করে এবং userRepository.findOneBy() নির্দিষ্ট ইউজারকে রিট্রিভ করে।
সারাংশ
TypeORM ডেটাবেসে সংযোগ স্থাপন এবং ডেটা পরিচালনার জন্য একটি শক্তিশালী ORM টুল। TypeORM ব্যবহার করে আপনি PostgreSQL, MySQL বা অন্যান্য রিলেশনাল ডেটাবেসের সাথে সংযোগ স্থাপন করতে পারেন এবং কোডের মাধ্যমে ডেটা ম্যানিপুলেট করতে পারেন। ডেটাবেস কনফিগারেশন তৈরি করে, Entity ক্লাস দিয়ে টেবিলের সাথে ম্যাপিং করে, এবং TypeORM এর রেপোজিটরি API ব্যবহার করে ডেটা ইনসার্ট এবং রিট্রিভ করতে পারেন।
এটি ডেভেলপারদের জন্য কোডের মধ্যে SQL কোডের প্রয়োজনীয়তা কমিয়ে দেয় এবং রিলেশনাল ডেটাবেসের সাথে আরও কার্যকরীভাবে কাজ করতে সাহায্য করে।
Read more