Hibernate ORM (Object-Relational Mapping) ফ্রেমওয়ার্কের মাধ্যমে ডাটাবেস থেকে ডেটা রিট্রিভ (Retrieve) বা পড়ার প্রক্রিয়া খুবই সহজ এবং কার্যকরী। Hibernate ডেটাবেসের সাথে সম্পর্কিত অবজেক্টগুলির মধ্যে ম্যাপিং করে, এবং আপনি বিভিন্ন CRUD (Create, Read, Update, Delete) অপারেশন করতে পারবেন, যেখানে Read অপারেশনটি ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়।
Hibernate-এ ডেটা রিট্রিভ করার জন্য সাধারণত Session অবজেক্ট ব্যবহার করা হয়, যা ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করে এবং অবজেক্টগুলিকে রিটার্ন করে। এখানে বিভিন্ন পদ্ধতিতে ডেটা রিট্রিভ করার বিস্তারিত আলোচনা করা হলো।
1. Using Session.get() Method
Session.get() মেথড ব্যবহার করে নির্দিষ্ট ID-এর মাধ্যমে একটি অবজেক্ট রিট্রিভ করা যায়। এটি primary key দ্বারা রেকর্ড রিট্রিভ করে।
Example: Retrieving Data using Session.get()
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class RetrieveExample {
public static void main(String[] args) {
// Step 1: Create session factory and session
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
.addAnnotatedClass(Employee.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
try {
// Step 2: Create a new Employee object
int employeeId = 1;
// Step 3: Retrieve the Employee based on the ID
session.beginTransaction();
Employee employee = session.get(Employee.class, employeeId);
// Step 4: Display the retrieved employee
System.out.println("Retrieved Employee: " + employee);
session.getTransaction().commit();
} finally {
factory.close();
}
}
}
Explanation:
session.get(Employee.class, employeeId): এখানেget()মেথডটিEmployeeঅবজেক্ট রিটার্ন করে, যেখানেemployeeIdহল primary key। এটি রিট্রিভ করার জন্য ডাটাবেসের টেবিল থেকে সঠিক সারি খুঁজে বের করে।
2. Using Session.createQuery() with HQL (Hibernate Query Language)
Hibernate Query Language (HQL) ব্যবহার করে আরও জটিল কুয়েরি তৈরি করা সম্ভব। HQL SQL-এর মতোই দেখতে, কিন্তু এটি জাভা অবজেক্টগুলির জন্য ডিজাইন করা। createQuery() মেথডের মাধ্যমে আপনি HQL কুয়েরি চালাতে পারেন।
Example: Retrieving Data using HQL
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import java.util.List;
public class RetrieveExample {
public static void main(String[] args) {
// Step 1: Create session factory and session
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
.addAnnotatedClass(Employee.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
try {
// Step 2: Create a HQL query to retrieve all employees
session.beginTransaction();
Query<Employee> query = session.createQuery("from Employee", Employee.class);
// Step 3: Execute the query and get result list
List<Employee> employees = query.getResultList();
// Step 4: Display the results
for (Employee emp : employees) {
System.out.println(emp);
}
session.getTransaction().commit();
} finally {
factory.close();
}
}
}
Explanation:
session.createQuery("from Employee", Employee.class): এখানেcreateQuery()মেথডটি HQL কুয়েরি তৈরি করে যাEmployeeটেবিলের সমস্ত রেকর্ড রিট্রিভ করবে।query.getResultList(): এটি HQL কুয়েরি চালিয়ে সমস্তEmployeeঅবজেক্টের লিস্ট রিটার্ন করে।
3. Using Session.createCriteria() (Deprecated in Latest Versions)
Hibernate এর পুরানো ভার্সনে Criteria API ব্যবহার করা হত ডেটা রিট্রিভ করার জন্য। তবে, বর্তমানে Hibernate 5 এবং পরবর্তী ভার্সনগুলিতে Criteria API পুরানো হিসেবে চিহ্নিত হয়েছে এবং এর পরিবর্তে JPA Criteria API ব্যবহৃত হচ্ছে।
Example: Retrieving Data using Criteria (Hibernate 4.x or older)
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.CriteriaQuery;
import java.util.List;
public class RetrieveExample {
public static void main(String[] args) {
// Step 1: Create session factory and session
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
.addAnnotatedClass(Employee.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
try {
// Step 2: Create a Criteria query to retrieve employees
session.beginTransaction();
List<Employee> employees = session.createCriteria(Employee.class).list();
// Step 3: Display the results
for (Employee emp : employees) {
System.out.println(emp);
}
session.getTransaction().commit();
} finally {
factory.close();
}
}
}
Explanation:
session.createCriteria(Employee.class).list(): এটিCriteriaAPI ব্যবহার করেEmployeeটেবিলের সব রেকর্ড রিট্রিভ করে।
4. Using Session.createNativeQuery() (SQL Queries)
Hibernate এ native SQL queries ব্যবহার করার মাধ্যমে সরাসরি SQL কুয়েরি চালানো যেতে পারে। এটি Hibernate এর মাধ্যমে ডাটাবেসের সাথে সরাসরি SQL ইন্টারঅ্যাকশন করার জন্য ব্যবহৃত হয়।
Example: Retrieving Data using Native SQL
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.NativeQuery;
import java.util.List;
public class RetrieveExample {
public static void main(String[] args) {
// Step 1: Create session factory and session
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
.addAnnotatedClass(Employee.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
try {
// Step 2: Create a native SQL query to retrieve employees
session.beginTransaction();
String sql = "SELECT * FROM employee";
NativeQuery<Employee> query = session.createNativeQuery(sql, Employee.class);
// Step 3: Execute the query and get result list
List<Employee> employees = query.getResultList();
// Step 4: Display the results
for (Employee emp : employees) {
System.out.println(emp);
}
session.getTransaction().commit();
} finally {
factory.close();
}
}
}
Explanation:
session.createNativeQuery(sql, Employee.class): এটি native SQL কুয়েরি ব্যবহার করেemployeeটেবিল থেকে সমস্ত ডেটা রিট্রিভ করে এবংEmployeeক্লাসে মাপসই করে।
Hibernate এর মাধ্যমে ডেটা রিট্রিভ করার কয়েকটি পদ্ধতি রয়েছে, যেমন:
Session.get()Method: একটি নির্দিষ্ট primary key দ্বারা অবজেক্ট রিটার্ন করা হয়।- HQL (Hibernate Query Language): SQL এর মতোই দেখতে, তবে এটি জাভা অবজেক্টগুলির জন্য ডিজাইন করা।
- Criteria API: Hibernate 4.x এবং পুরানো ভার্সনে ব্যবহৃত, কিন্তু এখন এটি JPA Criteria API দ্বারা প্রতিস্থাপিত হয়েছে।
- Native SQL Queries: Hibernate দিয়ে সরাসরি SQL কুয়েরি চালানো সম্ভব।
এই সব পদ্ধতি Hibernate ব্যবহারকারীদের ডেটাবেস থেকে ডেটা রিট্রিভ করার জন্য শক্তিশালী এবং নমনীয় উপায় প্রদান করে।
Read more