Java内容仓库规范及产品介绍 - 编程入门网
Java内容仓库规范及产品介绍时间:2011-11-11 博客园 镜涛背景: 对于大多数的应用系统而言,保存信息无疑是最重要也是最平常的功能,目前大多数情况下这些信息 是保存在 Oracle、DB2、SqlServer等关系型数据库中的。但是这些数据库在处理图像、文档等二进制数 据方面,却是有很多的不足。虽然我们可以用文件系统来替代,例如淘宝就开发了自己的文件系统 (Taobao File System),能够满足高性能的存取海量小文件以及PB级数据量和百亿级数据规模的需求, 但是对于文件系统而言,他们没有提供用于搜索信息的查询语言,也没有提供关系、事务等相关的功能。 而随着应用程序的不断扩展,允许第三方访问这些存储数据已经成为一个典型的需求。 同时很长一段时间以来市场上各个厂家开发的不同的CMS系统,这些系统都建立在他们各自的内容仓库 之上,每个CMS 开发商都提供了他们自己的API来访问内容仓库。这对应用程序的开发者带来了困扰,因 为要学习不同的开发商提供的API,同时代码也与这些特定的API产生了绑定。JSR-170正是为解决这一问 题而出现的,它提供了一套标准的API来访问任何数据仓库。通过JSR-170,你开发代码只需要引用 javax.jcr.* 这些类和接口。它适用于任何兼容JSR-170规范的内容仓库。 JCR(或者JSR-170)规范: 1.JCR模型介绍: Java内容仓库(Java Content Repository,JCR)试图以独立于具体实现的方式解决这些问题。不论 底层资源(如,数据库,本地或虚拟文件系统)是什么,API都将相同。在数据存储之上,JCR提供诸如访 问粒度控制、版本控制、内容事件、全文检索和过滤等内容服务。如图(1-1)所示: 图(1-1) Java内容仓库规范及产品介绍(2)时间:2011-11-11 博客园 镜涛Java内容仓库使用“树结构”保存信息,提供了几个操作数据的特性。树由节点和属性组成,如图 (1-2),圆圈代表节点,方框代表属性。1个节点有且只有1个父亲,有任意数目的孩子(子节点)和任 意数目的属性。1个属性有且只有一个父亲(它是节点),它没有子节点,由一个名字和一个或多个值组 成。属性值的类型可以是:布尔(Boolean)、日期(Date)、双精(Double),长整(Long),字符串 (String)或流(Stream)。只有属性可以被用来存储信息,节点则被用来创建树内部的“路径”。在某 种程度上,这棵树类似文件系统的结构,节点是目录,属性是实际的文件。 图(1-2) 从上面的图中不难发现,根节点下有多个子节点a、b、c,每个子节点下面又会有多个子节点或属性。 例如:a节点下有两个子节点d和e,而e含有两个属性节点j和k,属性j包含了一幅图片,属性k为一个浮点 数字;同样的属性g包含了一段字符串而属性h则包含了一个整型数字。 上面图中的每个节点都可以通过他们在层次结构中的绝对路径来唯一标识。例如:“/”可以定位到根 节点,而路径/a/d/i则引用了值为“ture”的属性 i。同时绝对路径总是以“/”开始的,而相对路径则 是以层次中的某个节点为参考物的。例如:相对于/a而言,我们可以通过d/i来定位到值为“true” 的属 性i。 从对象关系角度上看,因为节点和属性含有很多共性的同时又有各自的特点,因而他们在扩展了Item 接口的同时增加了自己独特的方法。我们可以用UML图(1-3)来表示他们之间的关系: 图(1-3) 从UML图中我们不难看出,Node和Property都是Item的子类,每个Property节点有且只有一个Node类型 的父节点,而每个Node节点只能有0个(根节点)或一个Node父节点,以及多个Item子节点。 Java内容仓库规范及产品介绍(3)时间:2011-11-11 博客园 镜涛2.节点类型 每个Node节点都必须要有,并且只有 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |