我正在开发一个将JSON类型字符串保存/检索到数据库的项目。
一切正常,即保存和更新对于类型String,Number and Boolean
是安全的,但对于List and Map
,我想看看当数据返回时操作List和Map的安全方法是什么特别是当列表中的项目变大时,即数千个项目,例如“朋友”和“粉丝”列表中的数据库
在Java中处理JSON List
或Map
时,我也担心潜在的数据损坏。
使用JSON.Simple
库更新列表和地图的安全方法是什么,而不是在内存中加载所有内容(每个项目)。
例如,我只需要在存储在数据库中的JSON列表字符串中插入一(1)项。
答案 0 :(得分:1)
JSON不适合ORM(对象关系映射)。这就是为什么NoSQL数据库将JSON存储为文档(即整个事物)的原因。因此,JSON.Simple不支持延迟加载JSON结构的一部分。
关系数据库没有很好地映射到JSON(基元除外),因为List
的自然数据结构是1:N映射,其中列表类型具有索引列(即列表中的元素)Map
需要N:M映射。
因此,更好的解决方案可能是将整个JSON字符串存储在CLOB中(而不是试图将其拆分)或将整个JSON字符串保存在CLOB +中提取几个关键字段,以便您可以正确地索引数据。
但是当您使用JSON时,您将需要编写自己的OR映射器,它支持延迟加载JSON数组和映射,或者您必须每次都将整个结构读入RAM。