我們正在使用OODBMS,它同時允許Java「實體」和序列化對象。數據庫支持真正的圖形(無「樹」限制),序列化對象也可以安全地引用實體。 DB(幾乎)透明地工作,我們可以做任何我們想要的,而且它只是工作。序列化時可以找到「引用/父對象」嗎?
現在,我發現被標記爲「邏輯刪除」的對象(使用簡單的布爾標誌,而不是內置的DB功能,因爲DB沒有這樣的概念)被加載/保存在特定的對象圖中。
我想知道哪些對象引用了這些「殭屍」對象。嘗試使用反射來遍歷圖表目前還沒有工作。我可以簡單地使用Java序列化來導出對象圖,而不是數據庫,這也會導致「殭屍」對象被序列化。
我的問題是:我可以以某種方式提取關於在序列化過程中持有對「殭屍」對象的引用的對象的信息(「父對象」)嗎?可以有更多的,但只要我有一個,我可以迭代工作,直到我殺死所有這些無效的引用。
您使用哪種OODBMS?哪個版本? –
我們引入「邏輯刪除」標誌的原因是因爲數據庫沒有提供查找「父」對象的方法,因此也沒有爲實體提供「GC」。長期目標是驗證標記爲邏輯刪除的所有對象都是真正未引用的,所以我們最終可以刪除它們。 –