我有一个相当密集的更新应用程序,并且想知道是否有一个守护程序线程具有hibernate会话并且需要更新指令并将这些更新分组到一个批处理中是个好主意(我认为这样更高效) )。
提前谢谢。
答案 0 :(得分:0)
如果您的用例触发了许多更新,但这些更新不需要在触发时立即执行(就像他们将在现场添加的数据一样),您可以并且实际上建议存储它们并在以后执行它们(例如在晚上,或者当应用程序受到较少的打击时)。您不必为此需要一个守护程序(或任何类型)线程,只需将更新请求存储在某处,然后在某些时间间隔触发CRON作业或执行它们。您可以使用Quartz Scheduler来处理所有底层线程/调度。
关于批处理多个查询与单独执行它们,通常Hibernate负责处理(就像你在同一个事务中发出多个更新请求一样)Hibernate会批量处理它们并在最近的可能时间执行它们 - 通常是在transactio时结束),所以这不应该是你的问题。根据你的更新请求数量,可能会成为一个问题,就是Hibernate本身。在某些时候,您可能需要考虑使用JDBC并手动批量执行这些更新以获得性能。