JPA (Java Persistence API) ডেটাবেসের সাথে কাজ করার জন্য একটি শক্তিশালী এবং নমনীয় API। এর মাধ্যমে Java Objects এবং Relational Database Tables এর মধ্যে সম্পর্ক স্থাপন করা যায়, এবং এতে বিভিন্ন CRUD (Create, Read, Update, Delete) অপারেশন করা সম্ভব হয়।
এখানে আমরা Entity Persist করা (Create) প্রসেসের মাধ্যমে নতুন ডেটা ডাটাবেসে সেভ করার প্রক্রিয়া আলোচনা করব। JPA Entity হল একটি Java ক্লাস যা ডেটাবেস টেবিলের সঙ্গে সম্পর্কিত এবং JPA এর মাধ্যমে ডেটাবেসে পরিচালনা করা যায়।
১. Entity Class তৈরি করা (POJO ক্লাস)
প্রথমে Entity ক্লাস তৈরি করতে হবে, যা ডেটাবেস টেবিলের একটি প্রতিনিধিত্ব। JPA এর @Entity অ্যানোটেশন ক্লাসের উপর যোগ করা হয়, যাতে এটি JPA Entity হিসেবে চিহ্নিত হয়। @Id অ্যানোটেশন ফিল্ডের উপর যোগ করা হয়, যেটি ডেটাবেস টেবিলের প্রাইমারি কী হবে।
Example: Person Entity Class
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // Auto-generate ID
private Long id;
private String name;
private int age;
// Getters and Setters
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;
}
}
এখানে:
- @Entity: ক্লাসটিকে Entity হিসেবে চিহ্নিত করে।
- @Id: প্রাইমারি কী হিসেবে
idফিল্ড ব্যবহার করা হয়েছে। - @GeneratedValue(strategy = GenerationType.IDENTITY):
idফিল্ডটি ডাটাবেসের অটো ইনক্রিমেন্ট ফিল্ড হিসেবে কাজ করবে।
২. EntityManager দিয়ে Persist Operation (Create)
JPA ব্যবহার করে ডেটাবেসে নতুন Entity সংরক্ষণ করতে EntityManager ব্যবহার করা হয়। EntityManager হল JPA এর প্রধান API যা ডেটাবেস অপারেশন পরিচালনা করে, যেমন persist(), merge(), remove() ইত্যাদি।
Create (Persist) Example:
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class CreatePersonExample {
public static void main(String[] args) {
// Create EntityManagerFactory and EntityManager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("myJPAUnit");
EntityManager em = emf.createEntityManager();
// Create a new Person object
Person person = new Person();
person.setName("John Doe");
person.setAge(30);
// Persist the Person object (save to the database)
em.getTransaction().begin(); // Begin transaction
em.persist(person); // Persist (save) the person entity
em.getTransaction().commit(); // Commit the transaction
// Close the EntityManager
em.close();
emf.close();
System.out.println("Person saved successfully!");
}
}
Explanation:
- EntityManagerFactory emf = Persistence.createEntityManagerFactory("myJPAUnit"):
EntityManagerFactoryতৈরি হয় যা persistence.xml থেকে JPA ইউনিট কনফিগারেশন লোড করে। - EntityManager em = emf.createEntityManager():
EntityManagerতৈরি হয়, যা ডেটাবেস অপারেশন পরিচালনা করে। - em.getTransaction().begin(): ট্রান্সঅ্যাকশন শুরু করা হয়।
- em.persist(person): নতুন
Personঅবজেক্টটিকে ডেটাবেসে সেভ করা হয়। - em.getTransaction().commit(): পরিবর্তনগুলো কমিট করা হয় (ডেটাবেসে সেভ করা হয়)।
- em.close() এবং emf.close(): সংযোগ বন্ধ করা হয়।
৩. JPA Configuration (persistence.xml)
ডেটাবেসের সাথে সংযোগ স্থাপন করতে persistence.xml কনফিগারেশন ফাইল ব্যবহার করতে হয়। এটি সাধারণত META-INF/ ফোল্ডারে রাখা হয়। এখানে একটি persistence.xml ফাইলের উদাহরণ দেওয়া হলো:
<persistence 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"
version="2.0">
<persistence-unit name="myJPAUnit">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.example.model.Person</class> <!-- Include your entity class here -->
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.connection.driver_class" value="com.mysql.cj.jdbc.Driver"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydatabase"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
</properties>
</persistence-unit>
</persistence>
Explanation:
- persistence-unit name="myJPAUnit": JPA ইউনিটের নাম।
- com.example.model.Person: এখানে আপনার Entity Class উল্লেখ করতে হবে।
- hibernate.dialect: Hibernate ডায়ালেক্ট (এখানে MySQL)।
- hibernate.hbm2ddl.auto: ডেটাবেস স্কিমা আপডেট করার জন্য
updateসেট করা হয়েছে।
৪. Database Connection and Configuration
উপরে উল্লেখিত persistence.xml ফাইলে ডেটাবেস সংযোগ সম্পর্কিত কনফিগারেশন করা হয়েছে। ডেটাবেসের URL, ইউজারনেম, এবং পাসওয়ার্ড সঠিকভাবে সেট করতে হবে।
Example:
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/mydatabase"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
এখানে:
- hibernate.connection.url: ডেটাবেসের URL।
- hibernate.connection.username: ডেটাবেসের ইউজারনেম।
- hibernate.connection.password: ডেটাবেসের পাসওয়ার্ড।
সারাংশ
JPA (Java Persistence API) ব্যবহার করে ডেটাবেসে ডেটা Persist (Create) করা সহজ এবং কার্যকরী। EntityManager ব্যবহার করে Entity অবজেক্ট সেভ (Persist) করা হয়, যা ডেটাবেসের টেবিলের সাথে সম্পর্ক স্থাপন করে। JPA কনফিগারেশনের জন্য persistence.xml ফাইল ব্যবহৃত হয় এবং ডেটাবেসের সাথে সংযোগের জন্য hibernate বা অন্যান্য JPA প্রোভাইডার ব্যবহৃত হয়।
Read more