我们的 Java 桌面应用程序正在管理由用户编辑的多个文本文件。
目前,这些文件使用内部 Java 代码保存到文件系统中。我们希望摆脱这一点,转而使用现有的框架/库(最好是开源的);很高兴能够在运行时配置实际的持久存储:“文件系统”与“数据库”。
除了 JCR 实现(例如 JackRabbit)之外,还有其他可能的解决方案吗?关于将 JCR 用于我们的用例的任何反馈/建议?
谢谢。
我们的 Java 桌面应用程序正在管理由用户编辑的多个文本文件。
目前,这些文件使用内部 Java 代码保存到文件系统中。我们希望摆脱这一点,转而使用现有的框架/库(最好是开源的);很高兴能够在运行时配置实际的持久存储:“文件系统”与“数据库”。
除了 JCR 实现(例如 JackRabbit)之外,还有其他可能的解决方案吗?关于将 JCR 用于我们的用例的任何反馈/建议?
谢谢。
JCR 存储库的好处之一是它将应用程序从数据持久化的方式中抽象出来,但仍然提供分层组织、查询、搜索、事件等。
ModeShape是一种 JCR 实现,它在数据存储方式方面提供了极大的灵活性。它的连接器允许访问和/或存储文件系统(两种 选择)、关系数据库(支持许多 DBMS)、数据网格(例如 Infinispan)、SVN、组合(通过联合)中的内容,甚至在内存中(用于更小、更不重要的用途)。ModeShape 可以使用流畅的编程 API进行配置,但是一旦启动引擎,您就真的无法更改连接器。
(全面披露:我是项目负责人。)
因此,对于在文件系统上存储文件的用例,使用 ModeShape 及其文件系统连接器,您的应用程序可以使用 JCR API 访问(和操作)现有的文件和文件夹结构,同时让其他应用程序仍然可以访问相同的文件和文件夹通过文件系统。使用此连接器,您的应用程序可以选择在文件和文件夹节点上存储额外的属性,但您只能创建文件和文件夹节点。
您的用例的另一个选择是使用 ModeShape 的磁盘连接器,它允许您的应用程序创建文件、文件夹和其他内容并将信息存储在磁盘上。这个连接器比文件系统连接器功能强大得多,因为它可以存储任何内容(而且速度非常快)。它还将存储库内容作为文件保存在文件系统上,但它使用的结构与存储库的组织方式不同。IOW,磁盘连接器的设计并不是为了让其他应用程序可以使用文件系统来访问您存储在存储库中的文件。如果后者不重要并且您只是在寻找一种在文件系统上管理和存储内容的方法,那么磁盘连接器将是一个很好的选择。