关于hibernate的大数据量的处理

来源:互联网 发布:java逆波兰式算法 编辑:程序博客网 时间:2024/04/30 15:48

以前用得的是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了!一切运行正常!!!虽然问题是解决了,原理缺不甚明白,有待学习。。。。

原创粉丝点击