2013-08-03 32 views
1

我正在學習如何使用內容存儲庫(Jackrabbit),我想知道如何檢查一個節點是否被移除。我使用數據存儲,我知道這是不可變的,但節點必須存儲在某個地方?我已經配置了持久性管理器來使用postgresql。一切正常,我只想知道我如何看到節點實際上已被刪除。如何檢查節點是否從內容存儲庫中刪除?

回答

2

不確定您的意思是「實際刪除」。在JCR級別,Session.itemExists(path)會告訴你在指定的路徑上是否有一個Item(即一個Node或Property)。使用管理會話調用此功能,以確保訪問控制不會妨礙您的工作。

如果您正在尋找相應數據的磁盤刪除,這取決於PersistenceManager的實現 - 有些只會根據需要垃圾收集已刪除的數據,而另一些則會在JCR級別刪除時立即刪除它。較低層(數據庫,操作系統,磁盤)也可能會將刪除的數據保留一段時間。

+0

但我使用數據庫和數據存儲。當我添加文件時,文件內容被放置在文件系統中,但元數據存儲在哪裏?它沒有在它創建的表格中獲得一行或一些東西嗎?或者它是否將這個元數據保存在文件中? – LuckyLuke

+0

如果您使用Jackrabbit的DataStore(http://wiki.apache.org/jackrabbit/DataStore),並且它包含文件的內容,則某個大小的二進制JCR屬性確實存儲在文件系統中。 JCR nt:file節點的其他屬性根據Jackrabbit的PersistenceManager配置存儲,該配置可能以數據庫爲目標。正如我的初始回覆中所解釋的,在刪除節點時是否刪除該數據庫數據取決於PersistenceManager實現。 –

+0

是的,超過一定大小的二進制屬性存儲在文件系統中,但它們不是由保存其數據庫中的元數據的節點引用的嗎?我在哪裏可以找到節點? – LuckyLuke

相關問題