Jos*_*eph 4 java oracle hibernate
我目前在我的项目中设置了hibernate.它适用于大多数事情.但是今天我需要从表中返回几十万行查询.它是表中总行数的约2/3s.问题是查询需要大约7分钟.使用直接JDBC并执行我假设的相同查询,它需要<20秒.因此,我认为我做的事情完全错了.我将在下面列出一些代码.
DetachedCriteria criteria  =DetachedCriteria.forlass(MyObject.class);
criteria.add(Restrictions.eq("booleanFlag", false));
List<MyObject> list = getHibernateTemplate().findByCriteria(criteria);
关于它为什么会变慢和/或我可以做些什么来改变它的想法?
小智 5
您可能已经回答了自己的问题,直接使用JDBC.
Hibernate最多Object为每一行创建一些实例,或者更糟糕的是,为每行创建多个Object实例.Hibernate有一些非常简并的代码生成和实例化行为很难控制,特别是对于大型数据集,如果你启用了任何缓存选项,那就更糟了.
Hibernate不适合大型结果集,并且作为对象处理数十万行也不是非常注重性能.
原始JDBC只是行列的原始类型.数据量较少的订单.
如果您需要提取数十万条记录,我不确定hibernate是否正确使用.查询执行时间可能低于20秒,但获取时间会很长并占用大量内存.获得所有这些记录后,如何输出它们?它的数据远远超出您向用户显示的数据.对于进行数据仓库式数据处理而言,Hibernate并不是一个很好的解决方案.
| 归档时间: | 
 | 
| 查看次数: | 2832 次 | 
| 最近记录: |