应用程序数据持久性框架/库?

时间:2011-08-10 01:09:21

标签: java jcr data-persistence

我们的Java桌面应用程序正在管理用户编辑的多个文本文件。

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

除了JCR实施(例如,JackRabbit)还有其他可能的解决方案吗?关于在我们的用例中使用JCR的任何反馈/建议?

THX。

1 个答案:

答案 0 :(得分:1)

JCR存储库的一个好处是它从数据持久化的方式抽象应用程序,但仍提供分层组织,查询,搜索,事件等。

ModeShape是一种JCR实现,它为数据的存储方式提供了极大的灵活性。其connectors允许访问和/或存储文件系统(two choices)上的内容,relational database(支持多个DBMS),{{3} }(例如,Infinispan),data grid,组合(通过SVN),甚至federation(对于较小的,不太关键的用途)。可以使用in-memory配置ModeShape,但是一旦启动引擎,您实际上无法更改连接器。

(完全披露:我是项目负责人。)

因此,对于在文件系统上存储文件的用例,使用ModeShape及其文件系统连接器,您的应用程序可以使用JCR API访问(和操作) 现有的文件和文件夹结构< / em> ,一直让其他应用程序仍然通过文件系统访问相同的文件和文件夹。使用此连接器,您的应用程序可以选择fluent programmatic API在文件和文件夹节点上,但您只能创建文件和文件夹节点。

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