Hibernate批量查询的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:48:07
同上,在一个有2列的数据库中,需要用hibernate从中取出N条数据,请问DAO怎么写。
网上似乎没有关于hibernate批量处理查询的文章。

Hibernate有批量的更新、删除,查询本身就是批量的。
下面是一个查询dao,供参考:
public List QueryFuction() {
List result = new ArrayList();
Session session = SessionFactory.getSession();
Transaction ts = null;
try {
String sql = "select * from table";
Query query = session.createQuery(sql);
ts = session.beginTransaction();
result = query.list();
ts.commit();
}catch(Exception e) {
if(ts!=null) ts.rollback();
e.printStackTrace();
}
finally {
SessionFactory.closeSession();
}

}

Hibernate批量处理其实从性能上考虑,它是很不可取的,浪费了很大的内存。从它的机制上讲,Hibernate它是先把符合条件的数据查出来,放到内存当中,然后再进行操作。实际使用下来性能非常不理想,在实际使用中采用下面的第三种优化方案的数据是:100000条数据插入数据库,主流台式机的配置,需要约30分钟,呵呵,晕倒.

总结下来有三种来处理以解决性能问题:

1:绕过Hibernate API ,直接通过 JDBC API 来做,这个方法性能上是比较好的。也是最快的.

2:运用存储过程。

3:还是用Hibernate API 来进行常规的批量处理,可以也有变,变就变在,我们可以在查找出一定的量的时候,及时的将这些数据做完操作就