Entity Beans Java EE এর একটি গুরুত্বপূর্ণ অংশ যা ডেটাবেসে পেরসিস্টেন্ট ডেটা সংরক্ষণ এবং পরিচালনা করতে ব্যবহৃত হয়। তবে, EJB 3.x থেকে Entity Beans বেশিরভাগ সময় JPA (Java Persistence API) দ্বারা প্রতিস্থাপিত হয়েছে, কারণ JPA সহজ এবং আরও আধুনিক একটি পেরসিস্টেন্স ফ্রেমওয়ার্ক।
এখানে, Entity Beans এর ধারণা এবং JPA ব্যবহার করার উপায় নিয়ে বিস্তারিত আলোচনা করা হবে।
১. Entity Bean এর ধারণা
Entity Beans হল EJB এর একটি বিশেষ ধরনের কম্পোনেন্ট যা ডেটাবেসের সাথে যোগাযোগ করতে ব্যবহৃত হয়। Entity Beans ডেটাবেস টেবিলের প্রতিনিধিত্ব করে এবং ডেটাবেসে পেরসিস্টেন্ট ডেটা সংরক্ষণ এবং রিটার্ন করার জন্য ব্যবহৃত হয়। Entity Beans এর মধ্যে দুইটি ধরনের থাকে:
- Container-Managed Persistence (CMP): যেখানে EJB Container পেরসিস্টেন্স পরিচালনা করে।
- Bean-Managed Persistence (BMP): যেখানে ডেভেলপার নিজে পেরসিস্টেন্স ব্যবস্থাপনা করেন।
তবে, JPA আসার পর Entity Beans এর CMP ব্যবহারের পরিবর্তে JPA ব্যবহৃত হতে শুরু করেছে, কারণ JPA আরও সহজ এবং আধুনিক।
২. JPA (Java Persistence API)
JPA হল একটি Java API যা পেরসিস্টেন্ট ডেটাবেস অবজেক্টগুলোকে Java ক্লাসের সাথে ম্যাপ করতে সহায়তা করে। JPA এর মাধ্যমে আপনি ডেটাবেস অপারেশন যেমন create, read, update, delete (CRUD) সহজে করতে পারেন, এবং এটি Object-Relational Mapping (ORM) ব্যবহার করে।
২.১ JPA এর মূল বৈশিষ্ট্যসমূহ:
- Entity Class: JPA Entity একটি সাধারণ Java ক্লাস যেটি ডেটাবেস টেবিলের সাথে সম্পর্কিত থাকে।
- Persistence Context: EntityManager ব্যবহার করে Entity গুলির উপর অপারেশন করা হয়।
- JPQL (Java Persistence Query Language): JPA এর জন্য একটি বিশেষ কাস্টম ভাষা যা SQL এর মতো তবে এটি Java Objects উপর কাজ করে।
- Annotations: JPA Entity গুলি সাধারণত annotations ব্যবহার করে কনফিগার করা হয়, যেমন
@Entity,@Table,@Id,@Columnইত্যাদি।
২.২ JPA এ Entity Bean তৈরি করা
JPA ব্যবহার করে Entity Bean তৈরি করতে হলে, প্রথমে একটি Entity Class তৈরি করতে হবে যা ডেটাবেস টেবিলের সাথে সম্পর্কিত হবে।
২.২.১ Entity Bean Example
Employee.java (Entity Class):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.Table;
@Entity
@Table(name = "employee")
public class Employee {
@Id
private int id;
@Column(name = "name")
private String name;
@Column(name = "salary")
private double salary;
// Constructors, Getters and Setters
public Employee() {}
public Employee(int id, String name, double salary) {
this.id = id;
this.name = name;
this.salary = salary;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
এখানে:
- @Entity: এই অ্যানোটেশনটি Java ক্লাসকে একটি Entity হিসেবে চিহ্নিত করে।
- @Table: এটি Entity এর সাথে সম্পর্কিত ডেটাবেস টেবিলের নাম নির্ধারণ করে।
- @Id: এটি Entity এর প্রাইমারি কি বা ইউনিক আইডেন্টিফায়ার নির্ধারণ করে।
- @Column: এটি ডেটাবেস টেবিলের কলামের নাম এবং প্রোপার্টির সাথে সম্পর্কিত।
২.৩ EntityManager ব্যবহার করে JPA অপারেশন
JPA Entity গুলির উপর CRUD (Create, Read, Update, Delete) অপারেশন করতে EntityManager ব্যবহৃত হয়।
২.৩.১ EntityManager Example
EmployeeDAO.java (Data Access Object Class):
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class EmployeeDAO {
private EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
public EmployeeDAO() {
entityManagerFactory = Persistence.createEntityManagerFactory("EmployeePU");
entityManager = entityManagerFactory.createEntityManager();
}
// Create or Update
public void saveEmployee(Employee employee) {
entityManager.getTransaction().begin();
entityManager.persist(employee);
entityManager.getTransaction().commit();
}
// Read
public Employee getEmployee(int id) {
return entityManager.find(Employee.class, id);
}
// Delete
public void deleteEmployee(int id) {
Employee employee = getEmployee(id);
if (employee != null) {
entityManager.getTransaction().begin();
entityManager.remove(employee);
entityManager.getTransaction().commit();
}
}
}
এখানে:
- Persistence.createEntityManagerFactory("EmployeePU"): এটি EntityManagerFactory তৈরি করে, যা JPA কনফিগারেশন ফাইল (persistence.xml) থেকে লোড করা হয়।
- entityManager.persist(employee): এটি Entity গুলিকে ডেটাবেসে সংরক্ষণ করে (Create বা Update)।
- entityManager.find(Employee.class, id): এটি Entity গুলিকে ডেটাবেস থেকে খুঁজে বের করে (Read)।
- entityManager.remove(employee): এটি Entity কে ডেটাবেস থেকে মুছে ফেলে (Delete)।
২.৪ persistence.xml (JPA Configuration File)
JPA কনফিগারেশন ফাইল persistence.xml হয় যেখানে ডেটাবেস কনফিগারেশন করা হয়। এই ফাইলটি META-INF ফোল্ডারে থাকতে হয়।
persistence.xml Example:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="EmployeePU">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.example.Employee</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/employee_db"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
এখানে:
- persistence-unit name="EmployeePU": এটি Persistence Unit এর নাম, যা EntityManager এর সাথে সম্পর্কিত।
- javax.persistence.jdbc.url, user, password: এখানে ডেটাবেসের URL, ইউজারনেম এবং পাসওয়ার্ড কনফিগার করা হয়।
৩. JPA এর সুবিধা
- Object-Relational Mapping (ORM): JPA Java Objects কে ডেটাবেস টেবিলের সাথে ম্যাপ করে, যার ফলে ডেটাবেসের সাথে যোগাযোগ করা অনেক সহজ হয়।
- Query Language (JPQL): JPQL ব্যবহার করে Entity গুলির উপর SQL-এর মতো কোয়েরি চালানো সম্ভব।
- Portable: JPA সমর্থনকারী যেকোনো ডেটাবেস সিস্টেমের সাথে কাজ করতে পারে, ফলে এটি খুবই পোর্টেবল।
- Integration with Other Frameworks: JPA অন্যান্য Java EE ফ্রেমওয়ার্ক (যেমন CDI, EJB) এর সাথে খুব সহজে ইন্টিগ্রেট হতে পারে।
সারাংশ
Entity Beans এর মাধ্যমে Java EE তে ডেটাবেসের সাথে যোগাযোগ করা যেত, তবে JPA (Java Persistence API) এখন Entity Beans এর আধিকারিক রিপ্লেসমেন্ট হিসেবে ব্যবহৃত হয়। JPA সহজ এবং আধুনিক ORM সলিউশন প্রদান করে, যার মাধ্যমে Java Objects কে ডেটাবেস টেবিলের সাথে ম্যাপ করা সহজ হয়। JPA ব্যবহার করে ডেটাবেস অপারেশন যেমন CRUD (Create, Read, Update, Delete) করা যেতে পারে এবং এটি Java EE অ্যাপ্লিকেশনের জন্য একটি স্ট্যান্ডার্ড পদ্ধতি। Eclipse এ JPA কনফিগারেশন ও Entity Beans তৈরি করা সহজ এবং কার্যকর।
Read more