使用JSON序列化作为持久性机制而不是RDB

aai*_*mnr 2 c# java persistence json

我正在考虑在我的下一个项目中丢弃我的数据库以简化开发/演进.

一种方法是不要完全离开Objects域,并通过某种序列化来保留我的对象.能够在应用程序关闭时编辑初始对象状态会很好,所以像JSON这样的格式会很棒.

问题是JSON工具(比如Java Jackson),或者更确切地说是JSON本身,不能保留引用,因此在反序列化对象图之后我可以获得比序列化之前更多的实例 - 每个对同一对象的引用都获得新实例.

我注意到了JSPON,但似乎没有活着.

你怎么看待这种方法 - 是不是太简单了?或者也许我应该使用一些OODB(虽然它会产生额外的配置开销,我想保持简单).

Mar*_*ell 5

大多数简单的可移植序列化器(xml,json,协议缓冲区)都是序列化器(不是图形序列化器),所以你会看到这个问题......

您可以尝试使用不需要引用的DTO树吗?即代替:

Parent -(children)-> Child
       <--(parent)--
Run Code Online (Sandbox Code Playgroud)

你有(在DTO级别):

Parent {Key="abc"} -(child keys)-> {string}
Child {Key="def"} -(parent key)-> {string}
Run Code Online (Sandbox Code Playgroud)

这应该可以用于任何树序列化器; 但它需要额外(手动)处理.

有基于图形的序列化器,如.NET DataContractSerializer(启用了图形模式;默认情况下禁用); 但这是不便携的.