Spring ORM বা Hibernate-এ @Embeddable এবং @EmbeddedId অ্যানোটেশন ব্যবহার করা হয় কম্পোজিট প্রাইমারি কি (Composite Primary Key) পরিচালনার জন্য। যখন কোনো ডাটাবেস টেবিলের জন্য একাধিক কলাম একসঙ্গে প্রাইমারি কি হিসেবে ব্যবহৃত হয়, তখন এই অ্যানোটেশনগুলো কার্যকর ভূমিকা পালন করে।
@Embeddable Annotation
@Embeddable অ্যানোটেশন একটি জাভা ক্লাসকে নির্দেশ করে যে এটি অন্য কোনো Entity-তে এম্বেড করা যাবে। এই ক্লাস সাধারণত কম্পোজিট প্রাইমারি কি বা অন্য কোনো এম্বেডেড ডেটার জন্য ব্যবহৃত হয়।
উদাহরণ:
@Embeddable
public class EmployeeId {
private int departmentId;
private int employeeNumber;
// Getters, Setters, hashCode, and equals মেথড
}
- departmentId এবং employeeNumber একসঙ্গে প্রাইমারি কি হিসেবে ব্যবহৃত হবে।
- @Embeddable অ্যানোটেশনের মাধ্যমে এই ক্লাসকে Entity-তে এম্বেড করা যাবে।
@EmbeddedId Annotation
@EmbeddedId অ্যানোটেশন একটি Entity-তে কম্পোজিট প্রাইমারি কি ব্যবহার করতে সাহায্য করে। এটি @Embeddable দ্বারা নির্ধারিত ক্লাসকে এম্বেড করে।
উদাহরণ:
@Entity
public class Employee {
@EmbeddedId
private EmployeeId id;
private String name;
private String position;
// Getters এবং Setters
}
- Employee Entity-তে @EmbeddedId এর মাধ্যমে EmployeeId ক্লাস এম্বেড করা হয়েছে।
- EmployeeId ক্লাসটি প্রাইমারি কি হিসেবে ব্যবহৃত হবে।
উদাহরণ: সম্পূর্ণ ব্যবহার
১. EmployeeId (Embeddable Class):
@Embeddable
public class EmployeeId {
private int departmentId;
private int employeeNumber;
// Getters, Setters, hashCode, and equals
}
২. Employee (Entity Class):
@Entity
public class Employee {
@EmbeddedId
private EmployeeId id;
private String name;
private String position;
// Getters এবং Setters
}
৩. Repository Interface:
public interface EmployeeRepository extends JpaRepository<Employee, EmployeeId> {
}
৪. ডেটা সংরক্ষণ এবং পুনরুদ্ধার:
@Autowired
private EmployeeRepository employeeRepository;
public void saveEmployee() {
EmployeeId id = new EmployeeId();
id.setDepartmentId(1);
id.setEmployeeNumber(101);
Employee employee = new Employee();
employee.setId(id);
employee.setName("John Doe");
employee.setPosition("Manager");
employeeRepository.save(employee);
}
public Employee findEmployee(int departmentId, int employeeNumber) {
EmployeeId id = new EmployeeId();
id.setDepartmentId(departmentId);
id.setEmployeeNumber(employeeNumber);
return employeeRepository.findById(id).orElse(null);
}
@Embeddable এবং @EmbeddedId-এর সুবিধা
- কম্পোজিট প্রাইমারি কি পরিচালনা: সহজেই একাধিক কলামের সমন্বয়ে প্রাইমারি কি ব্যবহারের সুযোগ দেয়।
- কোড পুনঃব্যবহারযোগ্যতা: এম্বেডেবল ক্লাস পুনরায় ব্যবহারযোগ্য।
- পড়তে এবং পরিচালনা করতে সহজ: জটিল ডেটা স্ট্রাকচার সহজভাবে হ্যান্ডেল করা যায়।
- ORM এর সমর্থন: Hibernate এবং JPA উভয়েই এই অ্যানোটেশনগুলো কার্যকরভাবে সমর্থন করে।
Spring ORM-এ @Embeddable এবং @EmbeddedId অ্যানোটেশন জটিল ডেটাবেস স্ট্রাকচার যেমন কম্পোজিট প্রাইমারি কি ব্যবস্থাপনার জন্য অপরিহার্য। এগুলোর মাধ্যমে জটিলতা হ্রাস পায় এবং কোড স্ট্রাকচার আরও পরিষ্কার হয়।