JPA (Java Persistence API) হল একটি API যা Java প্রোগ্রামিং ভাষার মাধ্যমে রিলেশনাল ডেটাবেসে ডেটা সঞ্চালন, মানিপুলেশন এবং রিলেশনাল ডেটাবেসের সাথে অবজেক্ট-রিলেশনাল মডেলিং (ORM) করতে সাহায্য করে। JPA এ @Entity এবং @Table এনোটেশন দুটি প্রধান উপাদান যা Java ক্লাস এবং ডেটাবেস টেবিলের মধ্যে সম্পর্ক স্থাপন করতে ব্যবহৃত হয়।
@Entity এনোটেশন
@Entity অ্যানোটেশনটি JPA এর জন্য একটি বিশেষ অ্যানোটেশন যা ক্লাসকে একটি Entity হিসেবে চিহ্নিত করে। এটি নির্দেশ করে যে, এই ক্লাসটি একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে এবং এটি ডেটাবেসে সঞ্চিত থাকবে।
@Entity এর বৈশিষ্ট্য:
- @Entity ব্যবহার করা হলে, Java ক্লাসটি একটি ডেটাবেস টেবিলের সাথে যুক্ত হবে।
- এই ক্লাসের মধ্যে থাকা ফিল্ডগুলো ডেটাবেস টেবিলের কলামগুলির প্রতিনিধিত্ব করবে।
- একটি Entity ক্লাসে কমপক্ষে একটি @Id অ্যানোটেশন থাকতে হবে, যা ক্লাসের প্রাইমারি কী কলাম নির্ধারণ করে।
@Entity উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
private int age;
// Getter এবং Setter Method
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
এখানে, User ক্লাসটি @Entity অ্যানোটেশন ব্যবহার করে ডেটাবেসের user টেবিলের প্রতিনিধিত্ব করছে। id ফিল্ডটি ডেটাবেসের প্রাইমারি কী হবে, কারণ এখানে @Id অ্যানোটেশন রয়েছে।
@Table এনোটেশন
@Table অ্যানোটেশনটি @Entity এর সাথে ব্যবহৃত হয় এবং এটি Entity ক্লাসের সাথে সম্পর্কিত ডেটাবেস টেবিলের নাম নির্ধারণ করে। @Table এর মাধ্যমে আপনি টেবিলের নাম, স্কিমা, এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।
@Table এর বৈশিষ্ট্য:
- @Table অ্যানোটেশনটি ডেটাবেস টেবিলের নাম এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করতে ব্যবহৃত হয়।
- আপনি চাইলে টেবিলের নাম সঠিকভাবে @Table(name = "table_name") এর মাধ্যমে প্রদান করতে পারেন।
- যদি @Table ব্যবহার না করা হয়, তবে JPA Entity ক্লাসের নামের সাথে অটোমেটিকভাবে টেবিলের নাম তৈরি হয়।
@Table উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "users")
public class User {
@Id
private Long id;
private String name;
private int age;
// Getter এবং Setter Method
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
এখানে, @Table(name = "users") অ্যানোটেশনটি Entity ক্লাস User কে ডেটাবেসের users টেবিলের সাথে সম্পর্কিত করেছে।
অতিরিক্ত @Table বৈশিষ্ট্য:
schema: টেবিলের স্কিমা নির্ধারণ করতে ব্যবহৃত হয়।
@Table(name = "users", schema = "public")uniqueConstraints: টেবিলের জন্য একাধিক ইউনিক কনস্ট্রেইন্ট নির্ধারণ করতে ব্যবহৃত হয়।
@Table(name = "users", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
@Entity এবং @Table এর সম্পর্ক:
- @Entity: Java ক্লাসটিকে একটি Entity হিসেবে চিহ্নিত করে, যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে।
- @Table: @Entity এর সাথে সম্পর্কিত টেবিলের নাম নির্ধারণ করতে ব্যবহৃত হয়।
@Entity অ্যানোটেশন ব্যবহার করা হলে, ডেটাবেস টেবিলের নাম যদি @Table অ্যানোটেশন দিয়ে না দেয়া হয়, তাহলে JPA ডিফল্টভাবে Entity ক্লাসের নামের উপর ভিত্তি করে টেবিলের নাম নির্ধারণ করবে। তবে, @Table ব্যবহার করে আপনি টেবিলের নাম এবং অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করতে পারেন।
সার্বিক পর্যালোচনা
@Entity এবং @Table এনোটেশনগুলি JPA (Java Persistence API) এর গুরুত্বপূর্ণ অংশ। @Entity একটি Java ক্লাসকে ডেটাবেস টেবিলের সাথে সম্পর্কিত Entity হিসেবে চিহ্নিত করে, এবং @Table অ্যানোটেশন ব্যবহার করে Entity ক্লাসটির সাথে সম্পর্কিত টেবিলের নাম ও অন্যান্য বৈশিষ্ট্য কাস্টমাইজ করা হয়। এই অ্যানোটেশনগুলি JPA এর ORM সমাধান ব্যবহারের মাধ্যমে ডেটাবেসের সাথে Java অবজেক্টগুলোর সম্পর্ক স্থাপন এবং ডেটাবেস অপারেশন সহজতর করতে সাহায্য করে।
Read more