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;
import org.hibernate.Query;
import org.hibernate.type.DateType;
import org.hibernate.type.IntegerType;
import org.hibernate.type.StringType;
public class SonucDonder extends HibernateDaoSupport {
public List<SelectimdenDonenVerilerIcinModelSinifi> getSelect(){
List<SelectimdenDonenVerilerIcinModelSinifi> selectList = new ArrayList<SelectimdenDonenVerilerIcinModelSinifi>();
Query query = getSession()
.createSQLQuery("select ve icinde bir cok select daha")
.addScalar("id", StringType.INSTANCE)
.addScalar("date", DateType.INSTANCE)
.addScalar("numara", IntegerType.INSTANCE)
.addScalar("bir selctden donen bir sonuc", StringType.INSTANCE)
.addScalar("baska bir selectden donen baska bir sonuc", StringType.INSTANCE)
.addScalar("baska sonuc", StringType.INSTANCE)
.setResultTransformer(Transformers.aliasToBean(SelectimdenDonenVerilerIcinModelSinifi.class));
return selectList = query.list();
}
}
Buda session için extend ettiğim support sınıfım;
public abstract class HibernateDaoSupport {
@Autowired
private SessionFactory sessionFactory;
protected Session getSession() {
// Kesinlikle yeni instance almaz.
System.err.println("HIBERNATE SUPPORT SESSION FACTORY HASHCODE= " + sessionFactory.hashCode());
return sessionFactory.getCurrentSession();
}
}
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. :)