如何在使用大量记录时使用Hibernate更快地进行更新

时间:2013-03-19 09:00:51

标签: java sql-server-2008 hibernate indexing hql

在使用具有大量记录的hibernate update(Session.update())部分时,我遇到了问题。它变得非常慢。但插入(Session.insert())部分没有问题。有没有办法在我们更新lakh的记录时执行更新部分。有没有办法调整sql服务器,以便更新将变得更快。当我们为所有主要字段添加单独的索引时,删除部分需要时间。是否有更好的方法来调整SQL Server,以便它在插入,删除和更新时表现良好。

谢谢你, 赛义夫。

3 个答案:

答案 0 :(得分:2)

为每条记录执行批量更新,而不是单独更新。通过这种方式,您只需为所有记录命中一次数据库。

答案 1 :(得分:1)

当您进行保存时,只将数据保存到数据库中,而当您更新记录时,必须首先执行搜索操作,然后更新记录,这就是您面临更新问题而不是保存时的原因处理大量记录可以使用hibernate的 BATCH PROCESSING 来更新您的记录。从教程点来看,这是hibernate中批处理的一个很好的链接:

http://www.tutorialspoint.com/hibernate/hibernate_batch_processing.htm

答案 2 :(得分:0)

可能还有其他解决方案,但我知道的一种方法是:

每当您通过session (e.g. session.save(), session.update(), session.saveOrUpdate() etc.)保存或更新实例时,它还会更新实例FK关联。

因此,如果您的POJO有多个FK关联,它也会在这些表上触发查询。

因此,我建议不要以这种方式更新实例,而是建议使用HQL(如果它适用于您的要求)来保存或更新实例。