JPA (Java Persistence API) হল Java এ ডেটাবেসের সাথে অবজেক্ট-রিলেশনাল ম্যাপিং (ORM) পরিচালনার জন্য একটি স্ট্যান্ডার্ড API। JPA ডেটাবেসে অবজেক্টগুলিকে (এনটিটিজ) সংরক্ষণ এবং ম্যানিপুলেট করতে সহায়তা করে। এটি Hibernate, EclipseLink, OpenJPA ইত্যাদি বিভিন্ন ORM ইমপ্লিমেন্টেশন দিয়ে কাজ করে।
JPA-তে তিনটি গুরুত্বপূর্ণ কনসেপ্ট হল:
- Entity
- EntityManager
- EntityManagerFactory
1. Entity
JPA-তে Entity হল একটি ক্লাস যা ডেটাবেসের একটি টেবিলের প্রতিনিধিত্ব করে। Entity ক্লাসের প্রতিটি অবজেক্ট একটি রেকর্ড (row) হিসেবে ডেটাবেসে সংরক্ষিত হয়। Entity একটি সাধারণ Java ক্লাস, তবে এটি কিছু বিশেষ অ্যানোটেশন দ্বারা চিহ্নিত হয়, যা JPA কে বলে দেয় যে এটি একটি Entity।
Entity এর বৈশিষ্ট্য:
- Entity ক্লাস সাধারণত
@Entityঅ্যানোটেশন দ্বারা চিহ্নিত হয়। - Entity ক্লাসের মধ্যে একটি primary key থাকতে হবে, যা
@Idঅ্যানোটেশন দ্বারা চিহ্নিত হয়। - Entity ক্লাসের মধ্যে getter এবং setter মেথড থাকা প্রয়োজন।
Entity উদাহরণ:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Product {
@Id
private Long id;
private String name;
private Double price;
// Constructor, Getters and Setters
public Product(Long id, String name, Double price) {
this.id = id;
this.name = name;
this.price = price;
}
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অ্যানোটেশন দ্বারাProductক্লাসটি একটি Entity হিসাবে চিহ্নিত হয়েছে।@Idঅ্যানোটেশন দ্বারাidফিল্ডটিকে Entity-এর primary key হিসেবে চিহ্নিত করা হয়েছে।
2. EntityManager
EntityManager হল JPA-এর প্রধান ইন্টারফেস, যা Entity অবজেক্টগুলির জন্য CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করে। এটি ডেটাবেসের সাথে কাজ করার জন্য ব্যবহৃত হয় এবং Entity অবজেক্টগুলির মধ্যে ডেটার পলিং, ম্যানিপুলেশন, এবং লোডিং সঞ্চালিত করে।
EntityManager এর বৈশিষ্ট্য:
- EntityManager এর মাধ্যমে Entity অবজেক্ট তৈরি, রিড, আপডেট এবং ডিলিট করা যায়।
- এটি JPA এ ক্লাসগুলির পPersistency Context (একটি নির্দিষ্ট সেশন বা কনটেক্সট যেখানে Entity অবজেক্টগুলো কাজ করে) পরিচালনা করে।
- EntityManager সাধারণত JPA এর মধ্যে ব্যবহৃত transactional অপারেশনগুলো পরিচালনা করে।
উদাহরণ:
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
public class ProductService {
@PersistenceContext
private EntityManager entityManager;
// Create or Update Product
public void saveProduct(Product product) {
entityManager.persist(product); // persist() method to insert or update
}
// Find a Product by id
public Product findProduct(Long id) {
return entityManager.find(Product.class, id); // find() method to retrieve an entity
}
// Delete a Product by id
public void deleteProduct(Long id) {
Product product = findProduct(id);
if (product != null) {
entityManager.remove(product); // remove() method to delete an entity
}
}
}
এখানে:
@PersistenceContextদ্বারা EntityManager কে ইনজেক্ট করা হয়েছে।persist(),find(), এবংremove()মেথডগুলি EntityManager দ্বারা Entity অবজেক্ট পরিচালনা করছে।
3. EntityManagerFactory
EntityManagerFactory হল একটি ফ্যাক্টরি ক্লাস যা EntityManager তৈরি করার জন্য ব্যবহৃত হয়। এটি একটি thread-safe অবজেক্ট এবং একবার তৈরি হলে এটি সার্ভিসে ব্যবহৃত হতে পারে। EntityManagerFactory সাধারণত পুরো অ্যাপ্লিকেশনের জন্য একটি একক instance তৈরি হয়।
EntityManagerFactory এর বৈশিষ্ট্য:
- এটি EntityManager তৈরি করে, যা Entity অবজেক্টগুলি পরিচালনা করে।
- EntityManagerFactory ডেটাবেসের কনফিগারেশন সেটআপ এবং JPA সম্পর্কিত অন্যান্য কনফিগারেশন পরিচালনা করে।
- এটি অ্যাপ্লিকেশন চলাকালীন একবারই তৈরি করা উচিত এবং প্রতিবার নতুন EntityManager তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class ProductService {
private static final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("productPU");
public void saveProduct(Product product) {
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(product);
entityManager.getTransaction().commit();
entityManager.close();
}
}
এখানে:
Persistence.createEntityManagerFactory("productPU")দ্বারা EntityManagerFactory তৈরি করা হয়েছে।createEntityManager()মেথড দিয়ে EntityManager তৈরি করা হয় এবং ডেটাবেসে তথ্য সংরক্ষণ করার জন্য এটি ব্যবহৃত হয়।- EntityManagerFactory কেবলমাত্র একবার তৈরি হয় এবং এটি ব্যবহার করা হয়।
EntityManager, EntityManagerFactory, এবং Entity এর মধ্যে পার্থক্য
| Concept | Description |
|---|---|
| Entity | একটি ক্লাস যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। |
| EntityManager | Entity অবজেক্টগুলি পরিচালনা করার জন্য ব্যবহৃত একটি API, যা CRUD অপারেশনগুলো পরিচালনা করে। |
| EntityManagerFactory | একটি ফ্যাক্টরি যা EntityManager তৈরি করে। একবার তৈরি হলে এটি সার্ভিসে ব্যবহৃত হয়। |
সারাংশ
JPA (Java Persistence API) ডেটাবেসের সাথে অবজেক্ট-রিলেশনাল ম্যাপিং (ORM) করতে ব্যবহৃত হয়। এখানে:
- Entity হল ক্লাস যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।
- EntityManager হল একটি API যা Entity অবজেক্টগুলির CRUD অপারেশন পরিচালনা করে।
- EntityManagerFactory হল একটি ফ্যাক্টরি যা EntityManager তৈরি করে এবং এটি ডেটাবেসের কনফিগারেশন পরিচালনা করে।
JPA ব্যবহার করে আমরা Java অবজেক্ট এবং ডেটাবেসের মধ্যে সম্পর্ক স্থাপন এবং ডেটা পরিচালনা করতে পারি।
Read more