如何有效地应用数据库中巨大列表的多个位置更改?

我有一个巨大的简单对象的java列表,存储在数据库中,通过索引列维护元素的位置。我使用hibernate但是自己管理列表,因为它太大而无法存储为集合。 在对列表进行一些更改(添加,删除,移动)之后,我想通过手动更新索引列并通过hibernate插入新的分别删除元素来持久保存数据库中的更改。 现在,(1)是否有一种有效的算法如何将列表增量与尽可能少的sql语句相结合 - 或者(2)我是否必须记录每个更改并逐步应用它?     
已邀请:
您可以尝试维护巨大列表的段的索引更改。例如,在1000个项目的列表中,如果您: 在第99和199位插入新项目, 将第2项移至第6位, 并删除第277项, 您可以使用HQL执行以下操作: 删除项目277 更新项目集索引= 6其中index = 2 更新项目集索引=索引-1其中索引介于3和6之间(并且它不是之前的项目 - 监视重叠) 更新项目集索引=索引+ 1,其中索引介于278和1000之间 更新项目集索引=索引+ 2,其中索引在199和276之间 更新项目集索引=索引+ 1,其中索引介于99和198之间 插入项目99和200 我还没准备好研究算法的细节,只是说你需要维护一个收集段列表和每个段的偏移量。     

要回复问题请先登录注册