Java JackRabbit持久性管理器

Java JackRabbit持久性管理器,java,jackrabbit,jcr,persistence-manager,Java,Jackrabbit,Jcr,Persistence Manager,我正在尝试决定在我的项目中使用哪种类型的持久性管理器。我读了这个 首先,由于JCR-2802(所有非捆绑包PM均已弃用),只有 BundleFsPersistenceManager BundleDbPersistenceManager Mysql,H2,PostgreSQL,Oracle,Derby,MSSQL - PersistenceManagers 所有这些InMem、Object、Xml持久化管理器都不推荐使用。(InMemPM不推荐使用时,MemoryFileSystem

我正在尝试决定在我的项目中使用哪种类型的持久性管理器。我读了这个

首先,由于JCR-2802(所有非捆绑包PM均已弃用),只有

BundleFsPersistenceManager
BundleDbPersistenceManager
      Mysql,H2,PostgreSQL,Oracle,Derby,MSSQL - PersistenceManagers
所有这些InMem、Object、Xml持久化管理器都不推荐使用。(InMemPM不推荐使用时,MemoryFileSystem仍然正常?)

因此,正如我看到的,BundleFsPersistenceManager使用LocalFileSystem在文件系统上持久化文件(是否有一个wiki条目解释如何将内容存储到文件中?——比如不同类型的节点属性,如nt:file),BundleDbPersistenceManager使用DbFileSystem将完全相同的文件存储到DBMS中?否则lucene索引和全文搜索就不可能了,对吗

所以原因是系统的集群和分布式性质以及原子性……否则数据库实现将是冗余的,对吗?像这样的人有更多的选择

InMemPM被弃用时MemoryFileSystem仍然正常

是的。。。令人遗憾的是,内存持久性管理器被弃用了,因为它允许运行快速的单元测试。但是,您也可以将数据库持久性管理器与内存中的数据库(如H2数据库)一起使用

是否有wiki条目解释如何将内容存储到文件中

不,因为这是一个实现细节,可能会发生更改,所以您不应该自己解析或编写这样的文件,而是使用Jackrabbit

喜欢不同类型的节点属性,例如nt:file

文件内容存储在数据存储中。节点和属性数据以及到数据存储的链接是持久性管理器

否则lucene索引和全文搜索就不可能了,对吗

Lucene索引独立于持久性管理器或持久性管理器使用的数据格式。Lucene索引内部不直接访问持久性管理器数据

否则数据库实现将是冗余的,对吗

只是有些人更喜欢将所有数据存储在数据库中(例如,因为他们已经拥有一个数据库,并且非常了解如何操作/备份/维护它)。大多数人似乎可以直接将数据存储在文件系统中,但是Jackrabbit中没有内置的基于事务文件的持久性管理器。为此,您需要使用Jackrabbit扩展,例如(商业)(免责声明:我为Adobe工作)