Spring Boot JPA-তে JPA (Java Persistence API) সম্পর্কিত অ্যানোটেশনগুলো ব্যবহৃত হয়, যা ডাটাবেসের সাথে অবজেক্ট ম্যাপিং করতে সাহায্য করে। এই অ্যানোটেশনগুলো Spring Boot অ্যাপ্লিকেশনের মধ্যে ORM (Object-Relational Mapping) প্রক্রিয়াটি সঞ্চালন করে, যেখানে Java অবজেক্টগুলোকে ডাটাবেস টেবিলের সঙ্গে সম্পর্কিত করা হয়।
এখানে আমরা @Entity, @Table, @Id, এবং @Column অ্যানোটেশনগুলোর ব্যবহার আলোচনা করব এবং দেখাবো কীভাবে এগুলো JPA-তে কার্যকরীভাবে ব্যবহার করা যায়।
1. @Entity
@Entity অ্যানোটেশনটি JPA-এর একটি গুরুত্বপূর্ণ অ্যানোটেশন যা একটি ক্লাসকে ডাটাবেস টেবিলের সাথে ম্যাপ করে। এটি Spring Beans-এ নির্দিষ্ট ক্লাসকে Entity হিসেবে চিহ্নিত করে, যা Spring JPA-এর মাধ্যমে ডাটাবেস টেবিলের প্রতিনিধিত্ব করে।
- @Entity ব্যবহার করলে Spring Data JPA ঐ ক্লাসটিকে ডাটাবেস টেবিলের একটি রেকর্ড হিসাবে দেখবে।
- প্রতিটি Entity একটি ডাটাবেস টেবিলের সাথে সম্পর্কিত থাকে।
উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
private String email;
// Getter এবং Setter
}
এখানে, User ক্লাসটি @Entity অ্যানোটেশন ব্যবহার করে ডাটাবেস টেবিলের প্রতিনিধিত্ব করছে। @Id অ্যানোটেশনটি ব্যবহার করে id প্রপার্টিকে টেবিলের প্রাইমারি কী হিসেবে চিহ্নিত করা হয়েছে।
2. @Table
@Table অ্যানোটেশনটি JPA-তে একটি Entity ক্লাসকে একটি নির্দিষ্ট ডাটাবেস টেবিলের সাথে সম্পর্কিত করতে ব্যবহৃত হয়। যদি আপনি @Entity অ্যানোটেশন ব্যবহার করেন, তবে ডিফল্টভাবে Entity ক্লাসের নামটি টেবিলের নাম হিসাবে নেওয়া হয়, তবে আপনি @Table অ্যানোটেশন ব্যবহার করে টেবিলের নাম কাস্টমাইজ করতে পারেন।
- @Table(name="table_name") টেবিলের নাম নির্দিষ্ট করার জন্য ব্যবহৃত হয়।
উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
@Entity
@Table(name = "users")
public class User {
@Id
private Long id;
private String name;
private String email;
// Getter এবং Setter
}
এখানে, @Table(name = "users") ব্যবহার করে Entity ক্লাসটি users নামের টেবিলের সাথে সম্পর্কিত করা হয়েছে।
3. @Id
@Id অ্যানোটেশনটি JPA Entity ক্লাসের মধ্যে প্রাইমারি কী (primary key) চিহ্নিত করতে ব্যবহৃত হয়। এটি ডাটাবেস টেবিলের ওই কলামকে নির্ধারণ করে যা ইউনিক রেকর্ডগুলোকে চিহ্নিত করবে।
- @Id একটি Entity ক্লাসের প্রপার্টি (field) কে প্রাইমারি কী হিসেবে চিহ্নিত করে।
উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id; // Primary key
private String name;
private String email;
// Getter এবং Setter
}
এখানে, id প্রপার্টি @Id অ্যানোটেশন ব্যবহার করে User Entity-র প্রাইমারি কী হিসাবে চিহ্নিত করা হয়েছে।
4. @Column
@Column অ্যানোটেশনটি JPA-তে একটি Entity ক্লাসের ফিল্ড বা প্রপার্টিকে ডাটাবেস টেবিলের কলামের সাথে সম্পর্কিত করতে ব্যবহৃত হয়। এটি টেবিলের কলামের নাম, ডাটা টাইপ, দৈর্ঘ্য ইত্যাদি কাস্টমাইজ করতে সহায়তা করে।
- @Column(name="column_name") কলামের নাম নির্দিষ্ট করতে ব্যবহার করা হয়।
- @Column(nullable=false) কলামটি null হতে পারবে না, এটি নির্ধারণ করতে ব্যবহৃত হয়।
- @Column(length=255) কলামের সর্বোচ্চ দৈর্ঘ্য নির্ধারণ করতে ব্যবহৃত হয়।
উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Column;
@Entity
public class User {
@Id
private Long id;
@Column(name = "user_name", nullable = false, length = 100)
private String name;
@Column(name = "user_email", unique = true)
private String email;
// Getter এবং Setter
}
এখানে, @Column(name = "user_name", nullable = false, length = 100) এবং @Column(name = "user_email", unique = true) ব্যবহার করে Entity ক্লাসের name এবং email প্রপার্টিগুলোর সাথে ডাটাবেস টেবিলের কলাম সম্পর্কিত করা হয়েছে। user_name কলামের জন্য এটি null হতে পারবে না এবং তার দৈর্ঘ্য 100 অক্ষর হবে। user_email কলামটি unique হিসাবে চিহ্নিত করা হয়েছে।
Conclusion
@Entity, @Table, @Id, এবং @Column অ্যানোটেশনগুলি Spring Boot JPA-তে খুবই গুরুত্বপূর্ণ। এগুলি ব্যবহৃত হয়:
- @Entity দ্বারা ক্লাসটিকে ডাটাবেস টেবিলের সাথে সম্পর্কিত করা হয়।
- @Table অ্যানোটেশন দ্বারা Entity ক্লাসের জন্য টেবিলের নাম নির্ধারণ করা যায়।
- @Id দ্বারা Entity ক্লাসের প্রাইমারি কী চিহ্নিত করা হয়।
- @Column দ্বারা Entity ফিল্ডের সাথে ডাটাবেস টেবিলের কলাম সম্পর্কিত করা হয় এবং কলামের বৈশিষ্ট্য কাস্টমাইজ করা হয়।
এই অ্যানোটেশনগুলির মাধ্যমে Spring Boot JPA আপনাকে ডাটাবেস টেবিলের সাথে অবজেক্ট সম্পর্কিত করতে সাহায্য করে, এবং ORM (Object-Relational Mapping) এর সুবিধা প্রদান করে যা ডাটাবেস অপারেশনগুলোকে আরও সহজ এবং কার্যকরী করে তোলে।
Read more