09

Ağu

2015

Hibernate Criteria ile Restrictions

Bu yazıyı Hibernate Criteria Örneği yazısının devamı olarak düşünebiliriz. Geçen yazımda üzerinde fazla durmadığım Restrictions konusuna bakacağız ve neler yapabileceğimizi anlatmaya çalışacağım. Restriction, kısıtlama anlamına gelmektedir. Criteria ile kullanımında veritabanı tablomuzdan çekeceğimiz veriler için özelleştirilmiş, kısıtlanmış sorgular atacağız.

Criteria ile Restrictions Kullanımı

Criteria sorgularımıza bir kısıtlama(restriction) eklemek için Criteria objemizle add() metotunu kullanabililiriz. Aşağıdaki örnek 2015 yılında yayınlanan kitaplara nasıl ulaşacağımızı ve Restrictions ı nasıl kullanacağımızı gösteriyor. Kullanabileceğiniz kısıtlamalar için Restrictions sınıfına bu linkten detaylı olarak bakabilirsiniz.

Restrictions ile neler yapabileceğimize madde madde bakalım. Book adındaki tablomuzda bookName, bookDesc, bookPublishDate, bookCost gibi değerleri tutuyor olalım.

– add(Restrictions.gt(“bookCost”, 25));  ile fiyatı 25 ten büyük olan kitaplara erişiriz.
– add(Restrictions.lt(“bookCost”, 25));  ile fiyatı 25 ten küçük olan kitaplara erişiriz.
– add(Restrictions.like(“bookName”, “Hibernate%”)); ile Kitap isminde “Hibernate” kelimesi geçen kitaplara erişiriz.
– add(Restrictions.between(“bookCost”, 10, 30)); ile fiyatı 10 ile 30 arasında olan kitaplara erişiriz.
– add(Restrictions.isNull(“bookCost”)); ile null olan, Restrictions.isNotNull ile null olmayan kitaplara erişiriz.
– add(Restrictions.isEmpty(“BookCost”)); ile BookCost değeri boş olan, isNotEmpty ile de boş olmayan kitaplara erişiriz.

AND ve OR koşullarını sağlamak için LogicalExpression Restrictions’ı kullanıyoruz.

 Criteria API, org.hibernate.criterion.Order sınıfını kullandırarak verilerimizi artan, azalan veya istediğimiz bir değere göre sıralamamızı sağlar.

Criteria API, org.hibernate.criterion.Projections sınıfı ile en düşük, en yüksek ve ortalama değerlerini almak için kullanılabilir. Projections sınıfı Restrictions sınıfına benzemektedir. Projection kullanımı ile ilgili farklı örnekleri aşağıda bulabilirsiniz.

Kısaca Restrictions sınıfına ve bize sağladığı imkanlara değinmeye çalıştım. Daha sonra bu yazıya örnek bir proje ekleyeceğim.

 

About Author

Yusuf Çakmak

Teknoloji ile ilgilenmeyi seven, herhangi bir teknolojiye kendini ait hissetmeyen, zaman buldukça farklı dilleri, kütüphaneleri, cihazları denemeye çalışan kendi halinde biriyim.

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir