Entity তৈরি করা এবং ডেকোরেটর ব্যবহার

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

274

TypeORM Entity কী?

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

Entity তৈরি করার জন্য TypeORM এ কিছু ডেকোরেটর ব্যবহার করতে হয়, যেমন @Entity(), @PrimaryGeneratedColumn(), @Column(), @ManyToOne() ইত্যাদি।

Entity তৈরি করা:

TypeORM-এ একটি Entity তৈরি করার জন্য প্রথমে একটি class তৈরি করতে হয় এবং তারপর সেই ক্লাসের মধ্যে ডেটাবেসের কলামগুলো ডিজাইন করা হয়। Entity ক্লাসে @Entity() ডেকোরেটর ব্যবহার করতে হয়, এবং এর প্রতিটি প্রপার্টি @Column() ডেকোরেটর দিয়ে সজ্জিত হয়।

Entity তৈরি করার উদাহরণ:

ধরা যাক আমরা একটি User নামক Entity তৈরি করতে চাই যা ডেটাবেসে ব্যবহারকারী সংক্রান্ত তথ্য রাখবে।

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

@Entity()  // এটি Entity টেবিলের সাথে সম্পর্কিত
export class User {
  @PrimaryGeneratedColumn()  // এটি টেবিলের প্রাইমারি কিওয়ার্ড হিসেবে কাজ করবে
  id: number;

  @Column()  // এটি টেবিলের একটি সাধারণ কলাম
  firstName: string;

  @Column()
  lastName: string;

  @Column()
  age: number;
}

এখানে:

  • @Entity(): এই ডেকোরেটরটি ক্লাসকে একটি Entity হিসেবে চিহ্নিত করে এবং TypeORM ডেটাবেস টেবিল হিসেবে এর সাথে কাজ করবে।
  • @PrimaryGeneratedColumn(): এটি একটি প্রাইমারি কলাম তৈরি করে যা অটোমেটিকভাবে ইউনিক ভ্যালু তৈরি করবে (এটি সাধারণত অটোমেটিক ইনক্রিমেন্টিং প্রাইমারি কিওয়ার্ড হয়)।
  • @Column(): এটি Entity-এর অন্যান্য প্রপার্টি (যেগুলি ডেটাবেসের কলাম হবে) চিহ্নিত করতে ব্যবহৃত হয়।

Entity ডেকোরেটর ব্যবহার:

TypeORM বেশ কিছু শক্তিশালী ডেকোরেটর সরবরাহ করে যা Entity তৈরি করার সময় ব্যবহার করা যায়। প্রতিটি ডেকোরেটর একটি নির্দিষ্ট কাজ করে এবং আপনাকে Entity এর সাথে সম্পর্কিত ডেটাবেসের অবস্থা এবং কাঠামো কাস্টমাইজ করতে সহায়তা করে।

প্রধান ডেকোরেটরগুলো:

  1. @Entity():
    • কাজ: এটি একটি ক্লাসকে Entity হিসেবে চিহ্নিত করে।
    • ব্যবহার:

      @Entity()
      export class Product {
        // Entity প্রপার্টি
      }
      
  2. @PrimaryGeneratedColumn():
    • কাজ: এটি প্রাইমারি কলাম হিসাবে কাজ করে এবং এটি সাধারণত অটোমেটিক ইনক্রিমেন্টের মাধ্যমে একটি ইউনিক ভ্যালু তৈরি করে।
    • ব্যবহার:

      @PrimaryGeneratedColumn()
      id: number;
      
  3. @Column():
    • কাজ: এটি ডেটাবেস টেবিলের কলাম হিসেবে একটি প্রপার্টিকে চিহ্নিত করে।
    • ব্যবহার:

      @Column()
      firstName: string;
      
  4. @ManyToOne():
    • কাজ: এটি দুইটি Entity-এর মধ্যে এক-থেকে-অনেক (one-to-many) সম্পর্ক তৈরি করে। উদাহরণস্বরূপ, একটি Post Entity এবং একটি User Entity এর মধ্যে সম্পর্ক।
    • ব্যবহার:

      @ManyToOne(() => User, user => user.posts)
      user: User;
      
  5. @OneToMany():
    • কাজ: এটি একটি Entity থেকে একাধিক সম্পর্কিত Entity সম্পর্ক তৈরি করে। উদাহরণস্বরূপ, একটি User Entity এর একাধিক Post সম্পর্ক।
    • ব্যবহার:

      @OneToMany(() => Post, post => post.user)
      posts: Post[];
      
  6. @JoinColumn():
    • কাজ: এটি একটি সম্পর্কিত Entity এর মধ্যে কীভাবে join করা হবে তা নির্ধারণ করে। এটি সাধারণত OneToOne বা ManyToOne সম্পর্কের ক্ষেত্রে ব্যবহৃত হয়।
    • ব্যবহার:

      @ManyToOne(() => User)
      @JoinColumn({ name: 'user_id' })
      user: User;
      

Entity ক্লাসের ব্যবহার:

এখন যে Entity তৈরি করা হয়েছে, তা TypeORM এর Repository বা QueryBuilder ব্যবহার করে ডেটাবেসে কাজ করতে পারে।

Repository ব্যবহার:

import { getRepository } from 'typeorm';
import { User } from './User';

const userRepository = getRepository(User);

// নতুন ব্যবহারকারী তৈরি
const newUser = new User();
newUser.firstName = 'John';
newUser.lastName = 'Doe';
newUser.age = 30;

// ব্যবহারকারী ডেটাবেসে সেভ করা
await userRepository.save(newUser);

QueryBuilder ব্যবহার:

import { getRepository } from 'typeorm';
import { User } from './User';

const userRepository = getRepository(User);

// QueryBuilder ব্যবহার করে ব্যবহারকারী খোঁজা
const users = await userRepository
  .createQueryBuilder('user')
  .where('user.age > :age', { age: 18 })
  .getMany();

console.log(users);

মাইগ্রেশন ব্যবস্থাপনা

TypeORM আপনাকে ডেটাবেস মাইগ্রেশন ব্যবস্থাপনা করার সুবিধা দেয়, যা Entity পরিবর্তন হলে স্বয়ংক্রিয়ভাবে ডেটাবেস স্কিমা আপডেট করে।

# মাইগ্রেশন তৈরি করা
npm run typeorm migration:generate -n CreateUserTable

# মাইগ্রেশন চালানো
npm run typeorm migration:run

সারাংশ

TypeORM Entity তৈরি করা TypeORM এর একটি গুরুত্বপূর্ণ অংশ, যেখানে আমরা ডেটাবেস টেবিলের জন্য class তৈরি করি এবং তার প্রপার্টিগুলো ডেটাবেস কলাম হিসেবে কাজ করে। ডেকোরেটর ব্যবহার করে Entity তৈরি করা হয়, যেখানে @Entity(), @PrimaryGeneratedColumn(), @Column(), @ManyToOne(), @OneToMany() ইত্যাদি ডেকোরেটর দ্বারা ডেটাবেস মডেল এবং সম্পর্কগুলো সংজ্ঞায়িত করা হয়। Entity তৈরি এবং ডেকোরেটর ব্যবহার করে TypeORM দিয়ে ডেটাবেসের কাজগুলি সহজে করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...