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

>是分层的,允许您在一个紧密匹配您的需求的结构中组织您的内容,相关信息通常存储在一起,从而轻松导航

>是灵活的,允许内容适应和演进,使用可以完全“无模式”到完全限制性(例如,像关系数据库)的节点类型系统,

>使用标准Java API(例如,javax.jcr)

>摘要信息真正存储在哪里:许多JCR实现可以将内容存储在各种关系数据库和其他存储中,有些可以通过JCR API公开非JCR存储,有些可以将多个存储联合到单个虚拟存储库中。

>支持开箱即用的查询和全文搜索

>支持事件,锁定,版本控制和其他功能

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

什么样的应用程序可以从这些功能中受益?内容管理系统已经使用了很长时间的存储库,JCR(和Jackrabbit)真的是因为需要一个通用的标准API来访问不同的内容存储库(见JSR-170和JSR-283)。

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

工件管理系统可以使用存储库来管理数字工件(通常是文件)以及附加信息(元数据)。 JCR在这里工作得很好,因为您可以将元数据存储在与文件相同的位置:那些理解这些额外的属性可以看到它们,那些不在乎不必看到它们。我知道Artifactory是一个使用JCR的Maven存储库实现。还有用于管理Web服务工件,数据服务工件和测试工件的存储库。

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

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

有几个很好的概述JCR与更多的细节和例子。其中一些是:

java jcr使用_java – 什么时候使用JCR(内容存储库)超过其他选项?相关推荐

  1. java 线程缓存_Java 实现缓存,一个线程存,一个线程取

    缓存类: package com.zit.test; import java.util.concurrent.BlockingDeque; import java.util.concurrent.Li ...

  2. java下载网页内容_java下载网页并读取内容

    下载回来怎么也得读取内容: package com.core.crawl; import java.io.IOException; import com.util.file.Files; public ...

  3. java循环输出_Java实现excel导出(内容循环多个)

    1 /************2019-11-28 ******************/ 2 /** 3 * 数据导出 2019-11-284 */ 5 publicString exportExc ...

  4. java使用ssh下载git代码_使用Java用户名和密码在ssh上克隆git存储库

    对于使用SSH进行身份验证,JGit使用 JSch.JSch提供了一个SshSessionFactory来创建和配置SSH连接.告诉JGit应该使用哪个SSH会话工厂的最快方法是通过SshSessio ...

  5. java bll dal_实体框架DAL,BLL与存储库模式

    我正在尝试使用UI,BLL和DAL构建三层体系结构.我正在使用实体框架与存储库模式. 我的问题是:实体框架生成的实体是否应该作为我的BLL的一部分,还是仅仅是DAL对象? 提问的理由是因为它感觉就像我 ...

  6. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  7. 【源码+图片素材+详细教程】Java游戏开发_Java开发经典游戏飞翔的小鸟_飞扬的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java课程设计项目

    课程目标: 1.通过本课程的学习巩固Java的相关基础知识,例如循环判断,数组和集合的使用,对象的继承,接口的实现,窗口的创建,事件监听,图形绘制. 2.完成小鸟的移动,管道自动生成.碰撞死亡,计分系 ...

  8. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  9. 【源码+项目部署】Java课程设计项目_Java人力资源管理系统

    对就业和毕业都有帮助的Java实战项目来咯--人力资源管理系统! 人力资源管理系统 |Java项目2小时上手编写_源码+数据库拿走不谢!Java实战项目_Java开发https://www.bilib ...

最新文章

  1. Struts2标签库
  2. Python open 读和写
  3. PHP Reflection与依赖注入
  4. 51nod 1443 路径和树——最短路生成树
  5. 用MSAgent实现web托盘程序!
  6. Android系列之开发环境搭建
  7. C语言程序设计飞机售票口,C语言课程设计报告飞机订票系统
  8. windows驱动开发 DDK/WDK/WDM/WDF区别
  9. python数据处理(招聘信息薪资字段的处理)
  10. 阿里云认证(ACA/ACP/ACE)的分类以及官网价格
  11. VMware虚拟机win7系统无法上网怎么办
  12. 我的第一本书《MXNet深度学习实战》
  13. JavaScript之时间线(代码解释)
  14. 杀不死的人狼——我读《人月神话》(一)
  15. 在access中记录的末尾标志是什么_access习题--报表和页
  16. WPS文字怎么插入背景音乐
  17. 物联网技术如何改变了我们的生活?
  18. Python小游戏:凯撒密码
  19. dwz打开自定义dialog
  20. (附源码)php校园二手交易网站 毕业设计041148

热门文章

  1. C# 字符串比较优化(StringComparison)
  2. python读取usb数据_PyUSB:从USB设备读取
  3. 将一元人民币兑换成1分、2分、5分,有几种兑换办法?
  4. 基金 、社保和QFII等机构的重仓股排名评测
  5. 使用.NET Micro ORM “Symbiotic”的简单 CRUD
  6. eclipse导入web项目出现红色叉叉
  7. 对话驴评网CEO崔继蓉:在线旅游的前途在移动端
  8. 网易电脑版我的世界显示获取服务器列表失败,我的世界网易中国版无法游戏问题汇总[图]...
  9. ValueError: With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be emp
  10. DTW 动态时间规整