Varım o halde yazıyorum…

Hibernate Criteria API – Restrictions.sqlRestriction metodu

Mart 1st 2014 Hibernate

Hibernate Criteria API’de hazırlanmakta olan sql’e “native sql” ekleyebilmemizi sağlayan özel bir metot bulunuyor; Restrictions.sqlRestriction(). Özellikle veritabanı fonksiyonlarından faydalanmak istediğimizde veyahut da düz sql ile daha kolay halledebileceğimizi düşündüğümüz durumlarda kullanışlıdır da.

Fakat bu metodun tek parametre alan hali sorunlara yol açabilir. Eğer kullanıcı tarafından(ekrandan, dosyadan vs.) girilen değer bu sql ifadesine doğrudan parametre olarak ekleniyorsa muhtemel bir “sql injection” veya yapısı bozulan bir sorgu(missing right/left parenthesis, invalid character vs.) ile karşılabilirsiniz.

Bu durumlardan sakınmak için metodun parametrelerinin tipini de belirtebildiğimiz versiyonunu kullanmak gerek.

//...
Criterion criterion = Restrictions.sqlRestriction("NLS_LOWER(USER_NAME, 'nls_sort = XTurkish') like  '" + userName + "'");
//...

şeklinde parametreyi sql ifadesine doğrudan eklemek yerine

//...
//Tek parametre olmasi durumundaki kullanim
Criterion critCode = Restrictions.sqlRestriction("NLS_LOWER(USER_NAME, 'nls_sort = XTurkish') like ? ", userName, StandardBasicTypes.STRING);
//...
//Birden fazla parametre olmasi durumundaki kullanim
Object[] parameterValues = new Object[]{userName, userSurname};
Type[] parameterTypes = new Type[]{StringType.INSTANCE, StringType.INSTANCE};
criteria.add(Restrictions.sqlRestriction("NLS_LOWER(USER_NAME, 'nls_sort = XTurkish') like ? or NLS_LOWER(USER_SURNAME, 'nls_sort = XTurkish') like ? ", parameterValues, parameterTypes));
//...

şeklindeki kullanım daha doğru olur.

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail



gerekli



gerekli - yayımlanmayacak


Yorum Yap & Fikrini Paylaş

Refactoring Nedir ?
Neden Refactor Etmek Gerek ?
Ne Zaman Refactor Etmek Gerek ?
Nasıl Refactor Etmek Gerek ?
Refactoring Kataloğu

Önceki Yazılar

Önceleri pek laf kondurmazdım takım tutkusuna. Futbolu lümpen bağımlılığı olarak görenleri pek bi züppe bulurdum. Afyonlardan bir afyon daha diyenler de vardı bu züppeler arasında. Hiç entellektüel değildi futbol, zihin filan açmıyordu, düşüncelere gark etmiyordu, bir ideolojisi filan da yoktu. Öyle bir maç izleyip de hayatınızın değiştiği de olmuyordu. Bir takıma, bir renk ikilisine bu […]

Sonraki Yazılar

Sharing
Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail