何时使用 JCR(内容存储库)而不是其他选项?

2024-05-10

我正在尝试评估内容存储库(JSR283 http://www.jcp.org/en/jsr/detail?id=283) like 长耳大野兔 http://jackrabbit.apache.org/ and 模式形状 http://www.jboss.org/modeshape但我必须承认,我不明白首先要解决什么问题,即使它对于项目来说是一个不错的选择。您认为哪些案例是最佳的应用解决方案?除了大小之外,与关系数据库不是一回事吗?为什么?指出现实世界的例子可以加分。

提前致谢。


JCR 存储库与 RDBMS 不同,因为 JCR 存储库:

  • 是分层的,允许您以紧密匹配您的需求的结构来组织内容,并且相关信息通常存储在一起,因此可以轻松导航
  • 是灵活的,允许内容适应和发展,使用可以完全“无模式”到完全限制性的节点类型系统(例如,像关系数据库)
  • 使用标准 Java API(例如 javax.jcr)
  • 抽象信息的实际存储位置:许多 JCR 实现可以将内容存储在各种关系数据库和其他存储中,有些可以通过 JCR API 公开非 JCR 存储,有些可以将多个存储联合到单个虚拟存储库中。
  • 支持开箱即用的查询和全文搜索
  • 支持事件、锁定、版本控制和其他功能

您当然可以在自己的应用程序中构建所有或部分功能,但这可能会远离您应用程序的主要目的。

什么样的应用程序可以从这些功能中受益?内容管理系统长期以来一直使用存储库,而 JCR(和 Jackrabbit)确实是出于对访问不同内容存储库的通用标准 API 的需求而发展起来的(请参阅JSR-170 http://jcp.org/en/jsr/detail?id=170 and JSR-283 http://jcp.org/en/jsr/detail?id=283).

另一个例子是文档管理系统,它管理电子文件(通常是纸质文档的图像)并提供搜索和查询。 DMS 使用存储库已有一段时间了。

工件管理系统可以使用存储库来管理数字工件(通常是文件)以及附加信息(元数据)。 JCR 在这里效果很好,因为您可以将元数据存储在与文件相同的位置:那些了解这些额外属性的人可以看到它们,那些不关心的人不必看到它们。我知道人工工厂 http://www.jfrog.org/products.php是使用 JCR 的 Maven 存储库实现。还有用于管理 Web 服务工件、数据服务工件和测试工件的存储库。

但 JCR 存储库不适用于管理文件。 JCR 使用节点层次结构的简单概念,其中节点可以包含命名属性(具有一个或多个值)和子节点。允许的属性和子节点完全由节点类型决定,可以根据需要逐个节点地更改和混合节点类型。 JCR 预定义了一些常用的内置节点类型,例如用于表示存储库中的文件和文件夹的节点类型。您可以重用这些内置类型、扩展它们或编写自己的类型。许多人主张将 mixin 几乎用作切面或方面,因此,如果节点需要采用切面,您可以简单地将 mixin 添加到节点。

JCR 旨在轻松支持将 XML 内容导入存储库,其中每个元素都映射到一个节点,每个属性都映射到一个属性。许多内容都是使用 XML(或 YAML 或 JSON)表示的,所有这些都可以轻松表示并存储在 JCR 存储库中。作为示例,请考虑存储配置信息(通常可能存储在多个 XML 文件中)的 JCR 存储库。 JCR 可以对该信息进行版本控制,允许从多个进程访问该信息,启用查询和搜索,并在内容更改时通知应用程序。

有一些关于 JCR 的很好的概述,其中包含更多细节和示例。其中一些是:

  • Introducing the Java Content Repository API http://www.ibm.com/developerworks/java/library/j-jcr/ by Titus Barik (no longer available)
  • JCR简介 http://www.slideshare.net/uncled/introduction-to-jcr作者:大卫·纽舍勒
  • JCR 和 Apache Jackrabbit 简介 http://www.slideshare.net/jukka/introduction-to-jcr-and-apache-jackrabbi-presentation通过尤卡·齐廷
  • 模态形状概述 http://modeshape.wordpress.com/2010/09/22/presentation-an-overview-of-modeshape/作者:兰德尔·豪奇
  • Java Content Repository: The Best Of Both Worlds http://java.dzone.com/articles/java-content-repository-best by Bertrand Delacretaz (no longer available)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 JCR(内容存储库)而不是其他选项? 的相关文章

随机推荐

  • 在 JerseyTest 中访问 Spring beans

    我试图弄清楚如何从 JerseyTest 的子类访问 Spring bean 扩展 JerseyTest 我已经设法在测试中加载 Spring 上下文 但我还没有弄清楚如何访问 spring 上下文 我的设置如下所示 public abst
  • 只读模式下不允许写操作(FlushMode.MANUAL)

    我对Spring真的很陌生 我正在使用 JSF Hibernate Spring 开发一个简单的 JEE 应用程序 我在尝试更新 DAO 上的值时遇到一些问题 我确信问题与 Spring 配置 xml 文件有关 但我无法找出是什么 这是我的
  • fprintf 调试断言失败

    我有一个程序 如果我手动启动它 它可以正确运行 但是 如果我尝试添加注册表项以在启动过程中自动启动它 则会收到以下错误 Debug assertion failed str null fprintf c line 55 我尝试在发生任何事情
  • 将 Angular Material 与 Twitter Bootstrap 相结合,不会发生冲突

    我想将 Twitter Bootstrap 与 Angular 材料结合起来 我发现引导材料设计https github com FezVrasta bootstrap material design https github com Fe
  • PyMC:马尔可夫系统中的参数估计

    简单的马尔可夫链 假设我们想要估计系统的参数 以便我们可以在给定时间步 t 的状态的情况下预测系统在时间步 t 1 的状态 PyMC 应该能够轻松处理这个问题 让我们的玩具系统由一维世界中的移动物体组成 状态是对象的位置 我们想要估计潜在变
  • 为 JpaTransactionManager 启用日志记录

    我在 spring 3 5 容器内使用 JpaTransactionManager 和 hibernate 3 我无法启用 JPA 日志记录 我希望查看事务管理日志以调试我的某些服务 我正在使用 log4j 这是我的 log4j prope
  • JWT Web 令牌加密 - SecurityAlgoritms.HmacSha256 与 SecurityAlgoritms.HmacSha256Signature

    用于基于令牌的身份验证Microsoft IdentityModel Tokens提供了可用于创建的安全算法列表SigningCredentials string secretKey MySuperSecretKey byte keybyt
  • 在同一进程中多次运行Scrapy

    我有一个网址列表 我想抓取其中的每一个 请注意 将此数组添加为start urls不是我正在寻找的行为 我希望它在单独的爬网会话中一一运行 我想在同一个进程中多次运行Scrapy 我想将 Scrapy 作为脚本运行 如常见做法 https
  • 通过Java开始SMS编程需要哪些资源? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用循环构建 json 对象?

    我正在尝试循环遍历多个项目 并创建一个 json 对象 每个循环都应该是对象上的一个新项目 但我在执行此操作时遇到了一些问题 似乎只添加了一组项目 而不是多个项目 这是我的代码 jsonObj rows each function inde
  • 使用cmd打开包含多个空格的文件时出现问题

    我使用 java 调用下面的命令 这是java初始化 String fileName C temp A a txt String sCmd cmd c start fileName 这是我打印 sCmd 时得到的结果 cmd c start
  • 使用另一个对象数组过滤对象数组

    这个问题与这个问题类似Jquery 过滤带循环的对象数组 https stackoverflow com questions 30998424 jquery filter array of object with loop但这次我需要使用对
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • powershell 优雅/干净地关闭 Internet Explorer

    我想干净 优雅地关闭互联网浏览器 taskkill 会关闭它 但是当重新打开它时 它会询问您是否要重新打开上一个会话 尝试 CloseMainWindow 方法 通过向其主窗口发送关闭消息来关闭具有用户界面的进程 Get Process i
  • pyqtgraph ImageView 在多线程时冻结

    我有多个通过 WiFi 无线连接的摄像头 我正在尝试将数据流式传输到客户端 客户端在 GUI 上显示流 我的问题是 pyqtgraph ImageItems 似乎在大约 30 秒后停止重新绘制 或者如果我单击窗口外 或者如果我调整其中一张图
  • 将国际象棋引擎连接到用 Javascript 制作的现有 GUI

    我编写了自己的用于下棋和教授国际象棋的 GUI GUI 是使用 HTML 编写的 用于外观 使用 JavaScript 来实现各个部件的行为 目前该程序不遵循任何国际象棋规则 正确遵循国际象棋规则取决于用户 这允许自由地设置非法位置或多次移
  • Python中的元素排列

    数组 data 的每个元素都必须更改如下 例如 4 应该可以在names A 和data A 中看到 4 的名字 A 是 David 现在 David 应该出现在names B 和data B 中 David 的 data B 是 30 所
  • 带有子 div 的 div 的背景颜色

    div div This is a text inside a div element div div We are still in the div element div div Why isnt the background colo
  • Windows 身份验证在 IISExpress 中有效,但在 IIS 中无效

    我有一个奇怪的问题 我正在 Visual Studio 2013 中使用最新的 MVC5 我正在尝试创建一个托管匿名 API 的站点以及一个需要通过 Windows 身份验证的 Intranet 域凭据的管理仪表板 当通过 IIS Expr
  • 何时使用 JCR(内容存储库)而不是其他选项?

    我正在尝试评估内容存储库 JSR283 http www jcp org en jsr detail id 283 like 长耳大野兔 http jackrabbit apache org and 模式形状 http www jboss