2011-08-10 35 views
1

我们的Java桌面应用程序管理多个文本文件被用户作为编辑。应用程序数据持久性框架/库?

目前,这些文件被保存到使用内部的Java代码的文件系统。我们希望摆脱这种情况,改用现有的框架/库(最好是开放源代码);可以在运行时配置实际的持久性存储:“文件系统”与“db”。

从JCR实现(例如,JackRabbit用)

除了是否有任何其他可能的解决方案?对我们的用例使用JCR的任何反馈/建议?

Thx。

回答

1

一个JCR仓库的好处是,它从抽象的方式将数据持久化的应用,但仍然提供了层次化的组织,查询,搜索,事件等

ModeShape是JCR实现的提议数据存储的灵活性非常大。其connectors允许文件系统(twochoices)上的内容的访问和/或存储在一个relational database(许多的DBMS支持),在一个data grid(例如,Infinispan的),在SVN,在组合(经由federation),或即使是in-memory(适用于较小,不太关键的用途)。 ModeShape可以使用fluent programmatic API进行配置,但一旦启动引擎,您确实无法更改连接器。

(全面披露:我的项目负责人。)

所以对于存储在文件系统上的文件,与振型和文件系统连接器应用程序可以使用JCR API访问的你的使用情况(和操作)文件和文件夹,而同时让其他应用程序仍然可以通过文件系统访问相同的文件和文件夹的现有结构。使用此连接器,您的应用程序可以选择在文件和文件夹节点上使用store extra properties,但仅限于创建文件和文件夹节点。

为您的使用情况下,另一种选择是使用振形的磁盘接口,它允许应用程序创建的文件,文件夹等内容,并存储在磁盘上的信息。这个连接器比文件系统连接器的功能强大得多,因为它可以存储任何内容(加上速度非常快)。它还将存储库内容作为文件保存在文件系统上,但它使用与存储库的组织方式不同的结构。 IOW中,磁盘连接器的设计并非如此,其他应用程序可以使用文件系统来访问存储在存储库中的文件。如果后者不重要,并且您只是在文件系统上寻找管理和存储内容的方法,那么磁盘连接器将是一个很好的选择。