

Merhaba arkadaşlar,
Daha önce burada bahsetmiştim ama bir soru içinde birden fazla soru sormak yasak olduğu için bu başlıkta soruyorum. Hibernate ile 1.5 dakika süren bir select'im var. Halbuki aynı select'i TOAD ile uyguladığımda 7 sn sürüyor. Select'i gizlilik gereği paylaşamıyorum. Ama anlatabilirim; 7 tablodan veri getiriyor ve çektiğim select'in içinde 5 tane daha select var. Selectception durumu yani.
Örnek Hibernate kodumu yazıyorum. Beki createSQLQuery'mi beğenmezsini. Belki başka yöntem söylersiniz ve select işlemimin zamanı kısalır.
Bu veri tabanı işlemi yapan class'ımın şuna benziyor;
Buda session için extend ettiğim support sınıfım;
Durum bundan ibaret hibernate'in select işleminin uzun sürdüğünden eminim log'lar ile test ettim. Bu işlemi kısaltmak için önerdiğiniz yöntemler var mı? Şunu değiş acayip hızlanacak dediğiniz her öneriye açığım. :)
soruldu: 30 Kas '15, 09:22
sin


Merhabalar sadece daha net cevap vermebilmek için soruyorum eğer entity tarafında relationlar arasında çok fazla EAGER kullanmışsanız bundan kaynaklanabilir bunu kontrol edebilirmisiniz.
cevaplandı: 30 Kas '15, 15:29
caglarturkurka


Merhabalar Hibernate Entity yapabilmek için anatosyon yada xml ile data classınızı Hibernate Entity e çevirebilir ve bu şekilde Criteria API ve HQL kullanarak select çekebilirsiniz.Ancak yalın SQL de aslında performans problemi yaratmamalı bundan dolayı aslında öncelikle bunları yapmadan SQL incelemeniz ve tam olarak burdaki sorunu belirlemenizi öneririm.
cevaplandı: 01 Ara '15, 17:21
caglarturkurka


Bir kere session factory'yi dependency injection ile alman başlı başına bir performans sorunu. Öncelikle onu düzeltmeni öneriririm.
SessionFactory, tüm yazılımda bir kere initialize edilse kafii. Nasıl ?
private static SessionFactory sessionFactory;
getter ekledikten sonra çeşitli dizayn paternleri ile bu şekil kullanman gerekir. Çünkü SessionFactory oluşturmak gerçekten çok çok pahalı bir işlemdir. Bu zaten başlı başına işlemini uzatır. Hemde veritabanın küçük değil ise düşündüğünden çok etkiler işlemi.
Benim gözüme takılan kısım burasıydı. Bir diğer yandan işlemin 1.5 dakika falan sürüyorsa bir şeyi yanlış yaptığından emin ol zira süre çok abes. Biraz daha bilgi verirsen daha sağlıklı cevaplar verebiliriz. Çünkü şundandır diyebileğimiz bir kaynak vermemişsin.
iyi çalışmalar...