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