0

我正在开发一个将 JSON 类型字符串保存/检索到数据库的项目。

一切正常,即保存和更新对于类型来说是安全的String,Number and Boolean,但是对于List and Map,我想看看当数据在数据库中来回传输时操作 List 和 Map 的安全方法是什么,尤其是当列表中的项目变大时,即数千个项目,例如“朋友”和“关注者”列表

List在处理 JSON或MapJava时,我还担心潜在的数据损坏。

JSON.Simple在不将所有内容(每个项目)加载到内存中的情况下,使用库更新 List 和 Map 的安全方法是什么?

例如,我只需要在存储在数据库中的 JSON 列表字符串中插入一 (1) 个项目。

4

1 回答 1

1

JSON 不适合 ORM(对象关系映射)。这就是 NoSQL 数据库将 JSON 存储为文档(即全部内容)的原因。因此,JSON.Simple 不支持延迟加载部分 JSON 结构。

正如您所注意到的,关系数据库不能很好地映射到 JSON(除了原语),因为自然数据结构List是 1:N 映射,其中列表类型有一个索引列(即列表中元素的位置),而Map需要一个N:M 映射。

因此,更好的解决方案可能是将整个 JSON 字符串存储在 CLOB 中(而不是尝试将其拆分)或将整个 JSON 字符串保存在 CLOB 中 + 提取一些关键字段,以便您可以正确索引数据。

但是,当您使用 JSON 时,您要么必须编写自己的 OR 映射器来支持 JSON 数组和映射的延迟加载,要么每次都必须将整个结构读入 RAM。

于 2012-08-03T12:53:12.647 回答