Simple JPQL Query তৈরি করা

Query Language (JPQL) - জেপিএ  (JPA) - Java Technologies

438

JPQL (Java Persistence Query Language) হল JPA-এর জন্য একটি কুয়েরি ভাষা যা ডেটাবেস টেবিলের পরিবর্তে Java Entity ক্লাসের উপর কাজ করে। JPQL SQL-এর মতো, তবে এটি SQL কুয়েরি ভাষার পরিবর্তে Java অবজেক্টের সাথে কাজ করে। JPQL এর মাধ্যমে ডেটাবেস থেকে Entity অবজেক্টগুলি রিট্রিভ, আপডেট, ডিলিট এবং ইনসার্ট করা যায়।

JPQL Query এর মৌলিক গঠন


JPQL কুয়েরির গঠন SQL-এর মতো হলেও, এটি ডেটাবেস টেবিলের পরিবর্তে Entity ক্লাস এবং তাদের ফিল্ডের সাথে কাজ করে। একটি সাধারণ JPQL কুয়েরি দেখতে এভাবে হয়:

SELECT e FROM EntityClass e WHERE e.fieldName = :parameter

এখানে:

  • SELECT: এই অংশে আপনি যেসব ফিল্ড বা ডেটা চাইছেন, তা নির্বাচন করবেন।
  • FROM: এটি Entity ক্লাসকে নির্দেশ করে যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।
  • WHERE: কন্ডিশন ব্যবহার করে রেকর্ডের ফিল্টার করা হয়।

উদাহরণ: Simple JPQL Query

ধরা যাক, আমাদের একটি Employee Entity ক্লাস রয়েছে এবং আমরা এর উপর একটি সহজ JPQL কুয়েরি তৈরি করতে চাই।

Employee Entity ক্লাস:

import javax.persistence.*;

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private double salary;

    // Getters and Setters
}

এখন, আমরা Employee Entity ক্লাস ব্যবহার করে কিছু JPQL কুয়েরি তৈরি করব।

1. সব Employee রেকর্ড পাওয়া (Select All Employees)

String jpql = "SELECT e FROM Employee e";
Query query = entityManager.createQuery(jpql);
List<Employee> employees = query.getResultList();

এখানে, SELECT e দ্বারা আমরা Employee Entity ক্লাসের সব অবজেক্টের তথ্য পাচ্ছি। e হল Employee Entity ক্লাসের একটি অ্যালিয়াস।

2. একটি নির্দিষ্ট Employee নির্বাচন করা (Select Employee by Name)

String jpql = "SELECT e FROM Employee e WHERE e.name = :name";
Query query = entityManager.createQuery(jpql);
query.setParameter("name", "John Doe"); // Parameter binding
Employee employee = (Employee) query.getSingleResult();

এখানে, আমরা WHERE e.name = :name কন্ডিশন ব্যবহার করছি, যেখানে :name একটি প্যারামিটার। এই প্যারামিটারটি পরে query.setParameter() দিয়ে সেট করা হয়েছে।

3. Salary এর উপর ভিত্তি করে Employees নির্বাচন করা (Employees with salary greater than a value)

String jpql = "SELECT e FROM Employee e WHERE e.salary > :salary";
Query query = entityManager.createQuery(jpql);
query.setParameter("salary", 50000); // Employees with salary greater than 50000
List<Employee> employees = query.getResultList();

এখানে, WHERE e.salary > :salary কন্ডিশন দ্বারা আমরা salary ফিল্ডের মানের উপর ভিত্তি করে Employee নির্বাচন করছি।

4. অর্ডার অনুযায়ী Employees নির্বাচন করা (Select Employees Ordered by Salary)

String jpql = "SELECT e FROM Employee e ORDER BY e.salary DESC";
Query query = entityManager.createQuery(jpql);
List<Employee> employees = query.getResultList();

এখানে, ORDER BY e.salary DESC ব্যবহার করে আমরা salary ফিল্ডের ভিত্তিতে Employees কে নাম্বার অর্ডারে (descending) সাজাচ্ছি।

5. গ্রুপিং এবং অ্যাগ্রিগেট ফাংশন ব্যবহার করা (Using GROUP BY and Aggregate functions)

String jpql = "SELECT e.department, AVG(e.salary) FROM Employee e GROUP BY e.department";
Query query = entityManager.createQuery(jpql);
List<Object[]> results = query.getResultList();

for(Object[] result : results) {
    String department = (String) result[0];
    Double avgSalary = (Double) result[1];
    System.out.println("Department: " + department + ", Average Salary: " + avgSalary);
}

এখানে, আমরা AVG(e.salary) ফাংশন ব্যবহার করে প্রতিটি বিভাগে (department) গড় বেতন বের করছি এবং GROUP BY e.department দিয়ে বিভাগের ভিত্তিতে গ্রুপিং করছি।


JPQL Query Execution


  1. createQuery: JPQL কুয়েরি তৈরি করার জন্য EntityManager এর createQuery মেথড ব্যবহার করা হয়।
  2. setParameter: যদি কুয়েরিতে প্যারামিটার ব্যবহার করা হয়, তবে setParameter মেথড দিয়ে প্যারামিটার সেট করা হয়।
  3. getResultList: কুয়েরির রেজাল্ট একটি List আকারে পাওয়া যায়।
  4. getSingleResult: যদি একক রেকর্ড রিটার্ন করতে চান, তবে getSingleResult মেথড ব্যবহার করা হয়।

সারাংশ


JPQL (Java Persistence Query Language) হল একটি শক্তিশালী কুয়েরি ভাষা যা Java Entity ক্লাসের উপর কাজ করে এবং ডেটাবেস থেকে ডেটা নির্বাচন করতে ব্যবহৃত হয়। JPQL কুয়েরির মাধ্যমে আপনি ডেটাবেস টেবিলের পরিবর্তে Java অবজেক্টগুলি রিট্রিভ, আপডেট, ডিলিট বা কুয়েরি করতে পারেন। এটি SQL-এর মত হলেও, এটি Java Entity ক্লাসের সঙ্গে কাজ করে এবং SQL ডেটাবেস টেবিলের পরিবর্তে অবজেক্টের উপর কাজ করে। JPA এবং JPQL এর সাহায্যে ডেটাবেস ইন্টারঅ্যাকশন আরও সহজ এবং অভ্যস্ত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...