HQL (Hibernate Query Language)

Hibernate იყენებს მძლავს query ენას (HQL) რომელიც არის SQL-ის მსგავსი.SQL თან შედარებით HQLარის მთლიანად ობიექტზე ორიენტირებული, რაც იმას ნიშნავს, რომ მან შეიძლება გაიგოს მემკვიდრეობის, პოლიმორფიზმისა და ასოციაციის ცნება.

საზოგადოდ HQL არ არის case sensitive, მაგრამ ჯავას კლასებთან მიმართებაში ის არის case sensitive. ამის კარგად გასაგებად მოვიყვანოთ მაგალითი. HQL-თვის sElEct , SELect და SELECT ერთი და იგივეა, მაგრამ მისთვის ერთი და იგივე არ არის org.hibernate.eg.foo და org.hibernate.eg.FOO და ასევე foo.barSet არ არის foo.BARSET. მომხმარებელს შეუძლია გამოიყენოს LOWER CASE ან UPPER CASE, მაგრამ კონვენციის თანახმად, ჯავაში ჩაშენებული კოდები იწერება LOWER CASE სტილში.

ყველაზე მარტივი HQL არის შემდეგი ფორმის:

 a

ეს კოდი დაგვიბრუნებს eg.Cat კლასის ყველა instance-ს. ხშირად კლასის სახელის მითითება არ არის საჭირო, default auto import-ის გამო.

 aa

მომხმარებელს ასევე შეუძლია გამოიყენოს alias-ები ასოცირებულ entity-ებთან ან კოლექციის ელემენტებთან, როცა იეყენებს join-ებს. განვიხილოთ ამისი მაგალითი. join-ების დროს default-ად არის inner join-ი.

 aaa

 aaaa

HQL-ში ასევე შეგვიძლია გამოვიყენოთ SQL-ის აგრეგატული ფუნქციები.მაგალითად, avg, sum, max და ა.შ. ვნახოთ ამისი მაგალითები.

 b

 bb

განვიხილოთ HQL-ში გაფილტვრის საშუალებები. მაგალითად where.

 c

 cc

როგორც ზემოთ აღვნიშნეთ, HQL-ში შეგვიძლია SQL-ის ყველა ბრძანების დაწერა. having, group by, order by, ასევე შეგვიძლია გამოვიყენოთ subquery-ები. ახლა ვნახოთ თითოეული მათგანის მაგალითი

 or

 gr

 gr2

subq

One thought on “HQL (Hibernate Query Language)

Leave a Reply / უპასუხე

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s