是否有可能找到"引用/父对象"什么时候序列化?

时间:2015-04-07 13:04:35

标签: java serialization

我们正在使用OODBMS,它同时允许Java“实体”和序列化对象。 DB支持真实图形(没有“树”限制),序列化对象也可以安全地引用实体。数据库(几乎)透明地工作,我们可以做任何我们想做的事情,而且只是工作。

现在,我发现已经标记为“逻辑删除”的对象(使用简单的布尔标志,而不是内置数据库功能,因为数据库没有这样的概念)被加载/保存在特定的对象图中。

我想知道哪些对象引用了那些“僵尸”对象。尝试使用反射迭代图表到目前为止还没有奏效。我可以简单地使用Java序列化来导出对象图,而不是DB,这也会导致“僵尸”对象被序列化。

我的问题是:我可以以某种方式提取有关在序列化过程中持有对“zombie”对象的引用的对象的信息(“父”对象)吗?可能有一个以上,但只要我有一个,我可以迭代工作,直到我杀死所有这些无效的引用。

1 个答案:

答案 0 :(得分:1)

大多数OODBMS允许运行返回满足特定约束的对象引用的查询。所以你可以这样写:

return all objects
where deleted == true
and Foo.bar == this

其中Foo是引用已删除对象的对象的类型,bar是包含引用的字段/属性。

确切的语法取决于您的OODBMS。