Entity কী এবং এর ভূমিকা

Entities এবং ডেটাবেস মডেলিং - টাইপওআরএম (TypeORM) - Web Development

1.1k

Entity কী?

Entity হল TypeORM-এর একটি প্রধান ধারণা, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। Entity একটি TypeScript ক্লাস, যার মধ্যে ডেটাবেস টেবিলের কলাম এবং তাদের সম্পর্ক (যেমন, একাধিক সম্পর্ক বা একটি সম্পর্ক) সন্নিবেশিত থাকে। প্রতিটি Entity একটি টেবিলকে মানে, যার প্রতিটি প্রপার্টি (যেমন, @Column() ডেকোরেটর দিয়ে চিহ্নিত) একটি কলামের প্রতিনিধিত্ব করে।

TypeORM ব্যবহারের সময়, Entity ক্লাসটি ডেটাবেসের টেবিলের সাথে সম্পর্ক স্থাপন করে এবং সেখানে CRUD (Create, Read, Update, Delete) অপারেশনগুলো পরিচালনা করতে সহায়তা করে। Entity ক্লাসগুলির সাহায্যে ডেটাবেসের ডেটা খুব সহজভাবে ম্যানিপুলেট করা যায়, SQL কোড লিখার প্রয়োজন ছাড়াই।


Entity এর ভূমিকা

Entity TypeORM প্রজেক্টের কেন্দ্রীয় অংশ, যা ডেটাবেস টেবিল এবং তাদের কাঠামো সংজ্ঞায়িত করে। এখানে, আমরা Entity এর ভূমিকা এবং এর কার্যক্রম বিস্তারিতভাবে আলোচনা করব:

১. ডেটাবেস টেবিলের প্রতিনিধিত্ব

TypeORM-এ প্রতিটি Entity একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। Entity-র মধ্যে থাকা প্রতিটি প্রপার্টি (যেমন @Column()) একটি টেবিলের কলাম হয়ে ওঠে, যা ডেটাবেসে সংরক্ষিত থাকে।

উদাহরণ:

import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

@Entity()  // এটি Entity কে টেবিল হিসেবে চিহ্নিত করে
export class User {
  @PrimaryGeneratedColumn()  // এটি Primary Key হিসাবে চিহ্নিত হয়
  id: number;

  @Column()  // এটি টেবিলের একটি কলাম
  name: string;

  @Column()
  email: string;
}

এখানে, User Entity একটি ডেটাবেস টেবিলকে প্রতিনিধিত্ব করে যার তিনটি কলাম: id, name, এবং email

২. ডেটাবেস স্কিমা সংজ্ঞায়িত করা

Entity ক্লাসের মাধ্যমে আপনি ডেটাবেসের টেবিলের স্কিমা (কলাম এবং তাদের ডেটা টাইপ) নির্ধারণ করতে পারেন। TypeORM ডাটাবেস টেবিলের structure এবং data types এই Entities থেকে নেয়।

উদাহরণ:

@Entity()
export class Product {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ type: 'varchar', length: 100 })
  name: string;

  @Column('decimal')
  price: number;
}

এখানে, Product Entity ডেটাবেসের product টেবিলের জন্য id, name এবং price কলামগুলি সংজ্ঞায়িত করছে। TypeORM এ কলামের জন্য ডেটা টাইপ (যেমন varchar, decimal, ইত্যাদি) সরাসরি Entity ক্লাসে নির্দিষ্ট করা যায়।

৩. সম্পর্ক সংজ্ঞায়িত করা (Relations)

Entity সম্পর্ক তৈরি করার মাধ্যমে, আপনি ডেটাবেসের মধ্যে OneToOne, OneToMany, ManyToOne, এবং ManyToMany সম্পর্ক স্থাপন করতে পারেন। TypeORM-এর @OneToMany, @ManyToOne, @ManyToMany, এবং @OneToOne ডেকোরেটর ব্যবহার করে এই সম্পর্কগুলো সংজ্ঞায়িত করা যায়।

উদাহরণ: OneToMany এবং ManyToOne সম্পর্ক:

import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm';
import { Post } from './Post';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @OneToMany(() => Post, post => post.user)  // OneToMany সম্পর্ক
  posts: Post[];
}

@Entity()
export class Post {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  title: string;

  @ManyToOne(() => User, user => user.posts)  // ManyToOne সম্পর্ক
  user: User;
}

এখানে, User Entity একটি OneToMany সম্পর্ক তৈরি করছে Post Entity এর সাথে, যা দেখাচ্ছে একটি User এর অনেক Post থাকতে পারে। এবং Post Entity ManyToOne সম্পর্কের মাধ্যমে এই সম্পর্কটি প্রতিষ্ঠা করছে।

৪. ডেটাবেস অপারেশন সহজ করা (CRUD Operations)

Entity এর মাধ্যমে TypeORM সরাসরি ডেটাবেস অপারেশন পরিচালনা করতে সাহায্য করে। আপনি SQL কোড লেখার প্রয়োজন ছাড়াই Entity ক্লাসগুলির মাধ্যমে ডেটা তৈরি, পড়া, আপডেট বা মুছে ফেলতে পারেন। TypeORM ডেটাবেসে CRUD অপারেশনগুলি সহজে পরিচালনা করার জন্য Entity ক্লাস ব্যবহার করে।

উদাহরণ: ডেটা ইনসার্ট (Create)

import { AppDataSource } from './data-source';
import { User } from './entity/User';

async function createUser() {
  const userRepository = AppDataSource.getRepository(User);
  const user = new User();
  user.name = 'John Doe';
  user.email = 'john.doe@example.com';

  await userRepository.save(user);
  console.log('User has been saved');
}

এখানে, userRepository.save(user) ব্যবহার করে নতুন User ডেটা ডাটাবেসে সংরক্ষণ করা হচ্ছে।


Entity এর অন্যান্য বৈশিষ্ট্য

  1. @PrimaryGeneratedColumn():
    এটি একটি স্বয়ংক্রিয়ভাবে উৎপন্ন হওয়া কলাম যা সাধারণত Primary Key হিসাবে ব্যবহৃত হয়। সাধারণত এটি AUTO_INCREMENT এর মতো কাজ করে।
  2. @Column():
    এটি টেবিলের একটি কলাম নির্দেশ করে, যেখানে আপনি ডেটা টাইপ, ডিফল্ট মান এবং কন্ডিশন উল্লেখ করতে পারেন।
  3. @ManyToOne(), @OneToMany(), @ManyToMany():
    এগুলি বিভিন্ন ধরনের সম্পর্ক নির্দেশ করতে ব্যবহৃত হয়, যেমন একাধিক পোস্টের সাথে একটি ব্যবহারকারীর সম্পর্ক বা একটি ক্যাটাগরির সাথে অনেক প্রোডাক্টের সম্পর্ক।

সারাংশ

Entity হল TypeORM-এর একটি মূল উপাদান, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে এবং এতে টেবিলের কলাম এবং সম্পর্কগুলো ডিফাইন করা হয়। TypeORM-এর Entity ক্লাস ব্যবহারের মাধ্যমে ডেটাবেসের স্কিমা নির্ধারণ করা যায় এবং সহজে CRUD (Create, Read, Update, Delete) অপারেশন করা যায়। Entity এর মাধ্যমে ডেটাবেস সম্পর্কগুলোও ডিফাইন করা সম্ভব, যেমন OneToOne, ManyToOne, ManyToMany, ইত্যাদি। এটি TypeORM এর মাধ্যমে ডেটাবেস ম্যানিপুলেশন খুবই সহজ এবং প্রক্রিয়া করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...