Merhaba farz edelim benim bir School tablom var.Bu schoolun teacherlari, studentleri ve s var. şöyle bir taktik kullanıyorum.

Önce

School school = (School) getSession().createCriteria(School.class).add(Restrictions.eq("id", id)).uniqueResult();
daha sonra da bana lazim olan related tablolarimi initialize yapiyorum
Hibernate.intialize(school.getTeachers());
Hibernate.intialize(school.getStudents());

boyle yazmak bana sorun yapa bilirmi?Lazy fetchingin bir security acigi ola bilirmi? Lazy fetching isimizi cok kolaylastirdi.Hic bir query yazmadik.Bir sorun yaparmi yapmaz mi diye dusunuyoruz. Tesekkurler

soruldu: 20 Eki '14, 12:58

Serxan's gravatar image

Serxan
51691106107
cevap kabul oranı: 46%

Hibernate'in Criteria API'isini kullansanız daha rahat değilmi?

(20 Eki '14, 13:13) Turgay Can Turgay%20Can's gravatar image

Merhaba.Biz zaten base tabloyu cekmek icin criteria kullaniyoruz. School school = (School) getSession().createCriteria(School.class).add(Restrictions.eq("id", id)).uniqueResult();

amma related tablolari almak icin Hibernate.initialize kullaniyoruz.Sorum su ki, binlerle adam siteye girdigi zaman lazy fetching sorun yapmazmi? Hibernate.initialize kullanarak dige related tablolar icin criteria yazmama ihtiyac kalmiyor onun icin boyle yapiyoruz

(20 Eki '14, 13:18) Serxan Serxan's gravatar image

1000 lerce kişi siteye giryorsa, zaten her istekte database'e gitmemeniz gerekir. Redis, memcache, couchbase gibi cache frameworkler kullanmalısınız.

(20 Eki '14, 17:41) Turgay Can Turgay%20Can's gravatar image

boyle yazmak bana sorun yapa bilirmi?

Aksine, yapmamaniz sorun olabilir, cünkü eager modunda hibernate ne bulursa, yükler, buna nesnenin sahip oldugu iliskilerdeki nesneler de dahildir. Sizin verdiginiz örnekte lazy loading yapiyorsaniz, school.getTeachers() dediginiz andan itibaren Teacher nesneleri yüklenir. School nesnesi yüklendiginde, Teacher ve Student nesneleri yüklenmez.

permanent link

cevaplandı: 20 Eki '14, 15:14

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

Cok teshekkur ederim.Biz şu konuda takildik.Normalde çoğu kişi diğer relatedl tablolari falan birer birer Criteria kullanarak çekiyor.Biz de bir az şüphelednik ki acaba biz mi bir şeyleri yanlış yapıyoruz? Yani related tabloları Criteria ile çekmemiz mutlak mı yoksa böyle devem edelimmi?Boyle yaparak işimiz o kadar kolaylaştı ki, biz de şaşırdık acaba biz mi yanlış yapıyoruz diye :D 1000-lerle insan hefedliyoruz onun için çok önemli kısım burası

(20 Eki '14, 15:21) Serxan Serxan's gravatar image

getTeachers() ile gelecek Teacher nesne adedi de önemli. getTeachers() binlerce nesne geri veriyorsa, bu da sorun yaratabilir. Pagination kullanilarak, gelen nesne sayisi sinirlanabilir. Criteria API de sexMatResults() metodu kullanilabilir.

criteria.setMaxResults(pageSize);

(20 Eki '14, 15:26) özcanacar ♦♦ %C3%B6zcanacar's gravatar image

Cok tesekkur ederim.Allah razi olsun

(20 Eki '14, 15:39) Serxan Serxan's gravatar image
1

Agir yük altindaki uygulamalar icin J2EE hocamin yazdigi gibi Memcahced, EhCache ya da Hazelcast gibi cache mekanizmalari kullanmakta fayda var. Cok degisiklige ugramayan yapilar hafizada tutulabilir.

(21 Eki '14, 04:22) özcanacar ♦♦ %C3%B6zcanacar's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×109
×3

Soruldu: 20 Eki '14, 12:58

Görüntüleme: 640 kez

Son güncelleme: 21 Eki '14, 04:22

powered by BitNami OSQA