Bilindiği üzere tüm veritabanlarının veri sorgulamak için birbirlerine benzer sorgulama dili vardır(Mssql için T-SQL, oracle için PL-SQL gibi). Hibernate ortamında veritabanından bağımsız düşünüldüğü için bu sorgulama dilleri arasındaki farklılığı ortadan kaldırmak amacıyla hibernate yapısal sorgulama dili(Hibernate Query Language) kullanılmaktadır. Hibernate yazılan HQL'i değerlendirip kullanılan veritabanına uygun dile dünüştürerek kullanır. Bu nedenle eğer HQL kullanarak daha esnek bir şekilde sorgulama yapmak istiyorsak bu dili öğrenmek icab ediyor. Aynı işlevi Criteria kullarak da belirtebiliyoruz. Ancak bu başka bir yazı konusudur. Bu yazıda HQL'in temel işlevlerini değerlendiriyor olacağım.
Küçük-Büyük Harf duyarlılığı:
Kullanılan sınıf isimlerine dayalı sorgularda sınıf ve sınıfın üyelerinde küçük-büyük harf duyarlılığı vardır. Ogrenci sınıfı ogRenCi gibi kullanılamaz. Ancak HQL'in ayrılmış anahtar kelimelerinde (reserved keywords) bu durum söz konusu değildir.(select, SELECT yada seLEct gibi kullanılabilir.
Select sözcüğü:
Select sözcüğünün kullanımına yönelik kullanımlar aşağıdaki gibidir. Takma isim ile kullanılan veriler için bilinçli seçim yapmak için takmaIsim.Alan1 gibi kullanılır.
select * from Ogrenci
select ogr.AdiSoyadi from Ogrenci ogr
select r.AdiSoyadi, t.AdiSoyadi from Ogrenci r, Ogretmen t
select r.AdiSoyadi, t.AdiSoyadi from Ogrenci r inner join Ogretmen t
select ogr.Numarasi, ogr.AdiSoyadi from Ogrenci ogr where ogr.AdiSoyadi like '%ali%'
From sözüğü:
Olası bazı from kullanımları aşağıdaki gibidir. Takma isim için kullanılan as sözcüğü opsiyoneldir.
from Ogrenci
from Ogrenci as ogr
from Ogrenci as r, Ogretmen as t
from Ogrenci r, Ogretmen t
Join işlemleri:
Hibernate ANSI SQL standartlarında belirtilmiş join tiplerini destekliyor. Bunlar: inner join, left outer join, right outer join ve full outer join şeklinde tanımlanmalıdır.
select r.AdiSoyadi, t.AdiSoyadi from Ogrenci r inner join Ogretmen t
select r.AdiSoyadi, t.AdiSoyadi from Ogrenci r inner join Ogretmen t left outer join Sinif s
5acb0a9d-84ba-4328-8b44-a4cf3efdd4b5|2|2.5