JSF (JavaServer Faces) একটি কম্পোনেন্ট-ভিত্তিক ফ্রেমওয়ার্ক যা Java EE অ্যাপ্লিকেশনগুলিতে ডেটাবেস অপারেশন সম্পাদন করার জন্য Entity Beans এবং JPA (Java Persistence API) ব্যবহার করতে সক্ষম। CRUD (Create, Read, Update, Delete) অপারেশনগুলি ডেটাবেসে ডেটা ম্যানিপুলেট করতে ব্যবহৃত হয় এবং JSF অ্যাপ্লিকেশনগুলিতে এটি Entity Beans-এর মাধ্যমে করা যেতে পারে।
এখানে, আমরা Entity Beans এবং JPA ব্যবহার করে ডেটাবেসে CRUD অপারেশন সম্পাদন করার প্রক্রিয়া আলোচনা করব।
Entity Bean এবং JPA পরিচিতি
Entity Bean হল একটি Java ক্লাস, যা একটি ডেটাবেস টেবিলের সাথে মেপিং করা থাকে এবং এটি ডেটাবেসে রেকর্ড সংরক্ষণ এবং পুনরুদ্ধার করতে ব্যবহৃত হয়। JPA (Java Persistence API) একটি স্ট্যান্ডার্ড API যা Java অ্যাপ্লিকেশনগুলিতে ডেটাবেস সংযোগ এবং ডেটা ম্যানিপুলেশন করার জন্য ব্যবহৃত হয়।
JPA Entity Beans একটি ডেটাবেস টেবিলের প্রতিরূপ (representation) হিসেবে কাজ করে এবং ডেটাবেসের রেকর্ডগুলির সাথে সংযুক্ত থাকে। এটি ORM (Object-Relational Mapping) প্রযুক্তির মাধ্যমে ডেটাবেস অপারেশন সরল করে।
Entity Bean তৈরি করা
প্রথমে, আমাদের একটি Entity Bean তৈরি করতে হবে, যা JPA দ্বারা ডেটাবেস টেবিলের সাথে মেপিং হবে। এটি একটি Java ক্লাস হবে, যার মধ্যে @Entity অ্যানোটেশন থাকবে এবং ডেটাবেস টেবিলের জন্য কনফিগারেশন থাকবে।
Entity Bean উদাহরণ: Product
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private double price;
// Getter and Setter methods
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
এখানে:
@Entity: এটি JPA Entity Bean কে চিহ্নিত করে।@Id: এটি Entity এর প্রাথমিক কী (primary key) চিহ্নিত করে।@GeneratedValue: এটি ডেটাবেসে প্রাথমিক কী স্বয়ংক্রিয়ভাবে সৃষ্টির জন্য ব্যবহৃত হয়।
CRUD অপারেশন (Create, Read, Update, Delete)
এখন, আমরা Entity Bean Product ব্যবহার করে CRUD অপারেশন সম্পাদন করব।
১. Create (ডেটা তৈরি)
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@ManagedBean
@RequestScoped
public class ProductBean {
@PersistenceContext
private EntityManager entityManager;
private Product product = new Product();
// Getter and Setter for product
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
// Create operation
public String create() {
entityManager.persist(product); // Save product to database
return "productList"; // Navigate to product list page after successful creation
}
}
এখানে:
entityManager.persist(product): এটি নতুনProductঅবজেক্টকে ডেটাবেসে সংরক্ষণ করে।
২. Read (ডেটা পড়া)
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class ProductBean {
@PersistenceContext
private EntityManager entityManager;
private Long productId;
// Getter and Setter for productId
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
// Retrieve product by ID
public Product getProductById() {
return entityManager.find(Product.class, productId); // Find product by ID
}
}
এখানে:
entityManager.find(Product.class, productId): এটি ডেটাবেস থেকে নির্দিষ্টproductIdএর সাথে সঙ্গতিপূর্ণProductঅবজেক্টটি খুঁজে বের করে।
৩. Update (ডেটা আপডেট)
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@ManagedBean
@RequestScoped
public class ProductBean {
@PersistenceContext
private EntityManager entityManager;
private Product product;
// Getter and Setter for product
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
// Update operation
public String update() {
entityManager.merge(product); // Update product in database
return "productList"; // Navigate to product list page after successful update
}
}
এখানে:
entityManager.merge(product): এটি ডেটাবেসে বিদ্যমানProductঅবজেক্টটি আপডেট করে।
৪. Delete (ডেটা মুছে ফেলা)
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@ManagedBean
@RequestScoped
public class ProductBean {
@PersistenceContext
private EntityManager entityManager;
private Long productId;
// Getter and Setter for productId
public Long getProductId() {
return productId;
}
public void setProductId(Long productId) {
this.productId = productId;
}
// Delete operation
public String delete() {
Product productToDelete = entityManager.find(Product.class, productId);
if (productToDelete != null) {
entityManager.remove(productToDelete); // Delete product from database
}
return "productList"; // Navigate to product list page after successful deletion
}
}
এখানে:
entityManager.remove(productToDelete): এটি ডেটাবেস থেকেProductঅবজেক্টটি মুছে ফেলে।
JSF পেজের মাধ্যমে CRUD অপারেশন
Product Creation (Create)
<h:form>
<h:outputLabel for="name" value="Product Name" />
<h:inputText id="name" value="#{productBean.product.name}" />
<h:outputLabel for="price" value="Price" />
<h:inputText id="price" value="#{productBean.product.price}" />
<h:commandButton value="Create Product" action="#{productBean.create}" />
</h:form>
Product Read (Read)
<h:form>
<h:outputLabel for="productId" value="Enter Product ID" />
<h:inputText id="productId" value="#{productBean.productId}" />
<h:commandButton value="Fetch Product" action="#{productBean.getProductById}" />
<h:outputText value="#{productBean.product.name}" rendered="#{not empty productBean.product}" />
<h:outputText value="#{productBean.product.price}" rendered="#{not empty productBean.product}" />
</h:form>
Product Update (Update)
<h:form>
<h:outputLabel for="productId" value="Product ID" />
<h:inputText id="productId" value="#{productBean.productId}" />
<h:outputLabel for="name" value="Product Name" />
<h:inputText id="name" value="#{productBean.product.name}" />
<h:outputLabel for="price" value="Price" />
<h:inputText id="price" value="#{productBean.product.price}" />
<h:commandButton value="Update Product" action="#{productBean.update}" />
</h:form>
Product Delete (Delete)
<h:form>
<h:outputLabel for="productId" value="Enter Product ID to delete" />
<h:inputText id="productId" value="#{productBean.productId}" />
<h:commandButton value="Delete Product" action="#{productBean.delete}" />
</h:form>
সারাংশ
JSF এবং JPA Entity Beans ব্যবহার করে ডেটাবেসে CRUD অপারেশন সম্পাদন করা সহজ এবং কার্যকরী। JSF ফ্রেমওয়ার্কের মাধ্যমে আপনি Managed Beans ব্যবহার করে ডেটা ম্যানিপুলেট করতে পারেন এবং JPA Entity Beans-এর মাধ্যমে ডেটাবেস টেবিলের সাথে সংযুক্ত ডেটা CRUD অপারেশন করতে পারেন। Entity Beans ব্যবহারের মাধ্যমে ডেটাবেসের রেকর্ড তৈরি, পড়া, আপডেট এবং মুছতে সাহায্য করে, যা JSF অ্যাপ্লিকেশনে ডেটাবেস ইন্টিগ্রেশনকে সহজ করে।
Read more