gpt4 book ai didi

sql - ORM或有效处理带有订单列的SQL表的东西

转载 作者:行者123 更新时间:2023-12-04 14:08:01 26 4
gpt4 key购买 nike

我得到了一个使用 SQL 表的 Java 应用程序,其中包含一个有序的实体列表,按顺序排序
一个订单栏。我想从中间添加/删除东西
的名单。现在,我想知道是否有一些持久性框架/orm/you-name-it
可以通过批量更新订单来提供这种功能
柱子。

在基本情况下,Hibernate(可能还有其他人)提供了这个
功能。
问题是对象一次处理一个,这就变成了
列表足够大时的问题。替代解决方案是
使用批处理 SQL 更新来完成此操作,例如如下所示:

UPDATE table SET order_col = order_col + 1 WHERE order_col > 47
INSERT TO table VALUES ('new_id', 'new_description, ..., 47)

这由数据库引擎完成得非常快,但不受支持。

现在,我明白这
考虑对象及其对象时,批量更新的类型不太适合
版本控制、脏检查等。
我仍然会问是否有人有一些好的想法或者是否有一些坚持
framework/ORM/you-name-it 会提供一些帮助。
当然,我可以使用自定义 SQL/HQL/... 来做这件事,但我想知道
如果已经有一些解决方案(我认为其他人可以
以前做过这样的事情,甚至把它放在开源下)。也欢迎与该问题相关的其他好主意 =)

最佳答案

我的建议是做两件事:

  • 在您的项目之间选择非常大的增量,比如一百万。通过这种方式,您可以将 8,000,000 的项目移动到 7,000,000 之前,只需将其更改为 6,500,000;和
  • 不时地将项目重新排序为批处理作业。

  • 大的增量并不能消除进行大量重新订购的问题,但是需要进行大量重新订购的可能性很小,并且批处理作业可以根据需要每天/每周/每月重新订购一次。

    一次更换一大堆元素只是凌乱和自找麻烦。

    关于sql - ORM或有效处理带有订单列的SQL表的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/495390/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com