以前用得的是hibernate3.0.5的版本~~~~而且關于queryfactory 的配置如下:
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
因為數據量超出了10萬條~~~~結果出現了 heap 溢出問題,想想了,也確實該溢出了,呵呵~~~
這種查詢方式,是將所有的查詢出來的結果以對象的形式進行緩存,如此巨大的數據,不把她給稱爆炸才怪呢:)
查查hibernate 的文檔,有關于大數據量的處理~~~,流程大抵如下:
Transaction tx = session.beginTransaction();
String hqlDelete = "delete VbufferGis ";
int deletedEntities = session.createQuery( hqlDelete ).executeUpdate();
tx.commit();
session.close();
測試運行出現如下異常:query must begin with SELECT or FROM ,文檔是清清楚楚是這樣寫的嘛,怎么會出現這樣的問題呢,是不是和我剛開始的時候一樣覺得挺納悶的,呵呵~~~原來是配置的問題,將上面的配置改為:
<prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop>
本以為這下是萬事大吉了,呵呵~~~~問題有出來了,define class not foundexception :antlr.antlrexception
在網上授了一把,原來hibernate用她來解析 hql ,而我用myEclipse的時候,有沒有導入那個包,自然有問題了,
于是將那個包導入,測試刪除運行,一切ok!這下是真的萬事大吉了嗎?還沒有,這也難怪我的多磨難了,呵呵
原來在進行待漢字的參數查詢的時候出現了亂碼現象,感覺挺奇怪的,百思不得其解,幸好有網絡這個好東西,google了一下,^_^ 原來值需要換一個版本就ok了,呵呵~~~于是在取sourceforge上面取下了 hibernate-3.1rc2.zip,這下子就ok了!一切運行正常!!!雖然問題是解決了,原理缺不甚明白,有待學習。。。。