HQL এর মৌলিক ধারণা এবং ব্যবহার

Querying Techniques এবং HQL (Hibernate Query Language) - এন হাইবারনেট (NHibernate) - Microsoft Technologies

257

HQL (Hibernate Query Language) হল একটি অবজেক্ট-ওরিয়েন্টেড কুয়েরি ভাষা যা NHibernate ব্যবহার করে ডেটাবেসে ডেটা খোঁজার জন্য ব্যবহৃত হয়। এটি SQL এর মতো, তবে SQL এর পরিবর্তে এটি অবজেক্ট-ভিত্তিক ভাষা, যেখানে আপনি অবজেক্টের ক্ষেত্র এবং তাদের সম্পর্কের মাধ্যমে কুয়েরি তৈরি করেন, টেবিল এবং কলামের পরিবর্তে।

HQL এর মাধ্যমে আপনি অবজেক্টগুলির উপর কুয়েরি করতে পারেন, যা আপনাকে ডেটাবেসের টেবিল স্ট্রাকচারের সাথে সরাসরি কাজ করার পরিবর্তে ক্লাস এবং অবজেক্টের সাথে কাজ করার সুযোগ দেয়।


HQL এর বৈশিষ্ট্য

  • অবজেক্ট-ওরিয়েন্টেড কুয়েরি: HQL তে আপনি সরাসরি ডেটাবেস টেবিলের পরিবর্তে ক্লাস এবং অবজেক্টের উপর কুয়েরি করবেন।
  • SQL-এর মতো সেন্ট্যাক্স: HQL সেন্ট্যাক্স SQL এর মতো হলেও, এটি ডেটাবেস টেবিলের পরিবর্তে অবজেক্ট এবং তাদের প্রপার্টি ব্যবহার করে।
  • এন্টিটি এবং সম্পর্ক: HQL তে আপনি অবজেক্টগুলির মধ্যে সম্পর্কগুলি যেমন One-to-Many, Many-to-One, Many-to-Many ইত্যাদি হ্যান্ডেল করতে পারেন।
  • টেবিলের নামের পরিবর্তে ক্লাসের নাম: HQL কুয়েরিতে আপনি সরাসরি টেবিলের নাম ব্যবহার না করে ক্লাসের নাম ব্যবহার করবেন।

HQL কুয়েরি লেখার নিয়ম

HQL কুয়েরি সাধারণত from এবং select শব্দের মাধ্যমে শুরু হয়, যেখানে from ক্লাসের নাম নির্দেশ করে এবং select কী প্রপার্টি বা তথ্য প্রয়োজন তা নির্দেশ করে।

উদাহরণ:

from Customer c where c.Name = 'John Doe'

এখানে, Customer ক্লাসের অবজেক্ট c এর মধ্যে Name প্রপার্টি 'John Doe' এর সমান এমন রেকর্ডগুলি খোঁজা হচ্ছে।


HQL এর মৌলিক কুয়েরি অপারেশন

1. Select কুয়েরি

from Customer c where c.Name = 'John Doe'

এটি Customer অবজেক্টের জন্য কুয়েরি করবে এবং Name প্রপার্টির মান 'John Doe' এর সমান এমন Customer অবজেক্টগুলো ফিরিয়ে দেবে।

2. Order By

from Customer c order by c.Name asc

এখানে, Customer রেকর্ডগুলো Name প্রপার্টি অনুযায়ী ascending অর্ডারে সাজানো হবে।

3. Join

HQL এ join ব্যবহার করে সম্পর্কিত অবজেক্টগুলির ডেটা একসাথে লোড করা যায়। উদাহরণস্বরূপ, Customer এবং Order এর মধ্যে সম্পর্কিত ডেটা একত্রে লোড করতে:

from Customer c join fetch c.Orders where c.Name = 'John Doe'

এখানে, Customer এবং তার সাথে সম্পর্কিত Orders একসাথে লোড হবে।

4. Group By

select c.Country, count(c) from Customer c group by c.Country

এটি Customer অবজেক্টের Country প্রপার্টি অনুযায়ী গ্রুপিং করবে এবং প্রতিটি দেশে কতজন গ্রাহক আছে তা গননা করবে।


HQL তে Aggregate Functions

HQL তে কিছু সাধারণ Aggregate Functions ব্যবহার করা যায়, যেমন count(), sum(), avg(), min(), max() ইত্যাদি। এই ফাংশনগুলো ডেটার ওপর বিভিন্ন গণনা বা পরিসংখ্যান তৈরি করতে ব্যবহৃত হয়।

উদাহরণ:

select count(c) from Customer c where c.Country = 'USA'

এখানে, USA দেশে থাকা Customer গুলোর মোট সংখ্যা গননা করা হবে।


HQL তে ইনপুট এবং আউটপুট

HQL কুয়েরিতে parameter binding ব্যবহার করা হয়, যাতে ডাইনামিক ভ্যালু পাস করা যায়। উদাহরণস্বরূপ:

from Customer c where c.Name = :customerName

এখানে, :customerName হল একটি প্লেসহোল্ডার, যেখানে পরবর্তীতে আপনি ডাইনামিকভাবে একটি মান পাস করতে পারবেন:

var query = session.CreateQuery("from Customer c where c.Name = :customerName");
query.SetParameter("customerName", "John Doe");
var customer = query.List<Customer>();

HQL এবং Criteria API এর মধ্যে পার্থক্য

HQL এবং Criteria API উভয়েই NHibernate তে কুয়েরি তৈরি করার জন্য ব্যবহৃত হয়, তবে তাদের ব্যবহারের মধ্যে কিছু পার্থক্য রয়েছে।

  • HQL হল একটি কুয়েরি ভাষা, যেখানে আপনি কুয়েরি স্ট্রিং লিখে কাজ করবেন।
  • Criteria API হল একটি প্রোগ্রাম্যাটিক পদ্ধতি, যেখানে আপনি কোডের মাধ্যমে কুয়েরি তৈরি করেন এবং জটিল কুয়েরি গঠন করতে পারেন।

HQL এর মাধ্যমে ডেটা লোড করা

using (var session = NHibernateHelper.SessionFactory.OpenSession())
{
    var query = session.CreateQuery("from Customer c where c.Name = :name");
    query.SetParameter("name", "John Doe");
    var customer = query.List<Customer>();  // List of Customers returned
}

এখানে HQL ব্যবহার করে Customer নামক ক্লাস থেকে Name প্রপার্টি 'John Doe' এর সমান এমন রেকর্ডগুলো লোড করা হচ্ছে।

Content added By
Promotion

Are you sure to start over?

Loading...