使用Hibernate进行数据的批量更新
当我们使用SQL直接在数据库里面操作是,批量更新一大批数据是很快捷的,比如
update Companys set BidPrice='1000' where Name='MS'
不管有多少条Name='MS'的记录都会被更新,而且直接作用于数据至少比较快。
但是当我们使用Hibernate的时候,事情就有点变化了,当我们必须批处理如以上的数据时,假定有10000条,那么我们必须先Query(..).List出10000个Company对象,而这些对象会马上加载到Hibernate的第一级缓存中,也就是Session缓存,成为持久化对象(PO),
在更新他们的时候:
String hqlStatement="update Company m set m.BiDPrice=:NewPrice where m.Name=:ComName"; int updatedEntities=session.createQuery(hqlStatement) .setString("NewPrice","1000") .setString("ComName","MS") .executeUpdate(); tx.commit(); session.close();