我的需求是这样的:table A{
id,
xx,
}table B{
id,
a_id,//A:id
xxx,
}从A中读出数据(数据量很大),根据这些数据得到要插入B的数据,这个处理时间很长,所以需要从A中分段读取数据进行处理,不知道hibernate中的分页是否可以处理这种问题我想的这种处理办法不行,哪位高手能否帮忙看看,先谢了SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
//session.setFlushMode(FlushMode.NEVER);
Transaction tx=session.beginTransaction();
Criteria criteria=session.createCriteria(A.class);
criteria.setFirstResult(0);
criteria.setMaxResults(5);
List<A> as=criteria.list();
int i=0;
for(A a:as){
i++;
session.save(new B()); if(i%5==0 && i!=0){
Criteria c=session.createCriteria(Event.class);
c.setFirstResult(5);
c.setMaxResults(5);
events=criteria.list();
}
}
session.getTransaction().commit();
id,
xx,
}table B{
id,
a_id,//A:id
xxx,
}从A中读出数据(数据量很大),根据这些数据得到要插入B的数据,这个处理时间很长,所以需要从A中分段读取数据进行处理,不知道hibernate中的分页是否可以处理这种问题我想的这种处理办法不行,哪位高手能否帮忙看看,先谢了SessionFactory factory = new Configuration().configure().buildSessionFactory();
Session session = factory.openSession();
//session.setFlushMode(FlushMode.NEVER);
Transaction tx=session.beginTransaction();
Criteria criteria=session.createCriteria(A.class);
criteria.setFirstResult(0);
criteria.setMaxResults(5);
List<A> as=criteria.list();
int i=0;
for(A a:as){
i++;
session.save(new B()); if(i%5==0 && i!=0){
Criteria c=session.createCriteria(Event.class);
c.setFirstResult(5);
c.setMaxResults(5);
events=criteria.list();
}
}
session.getTransaction().commit();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货