JBoss DNA官方文档 第一章、简介

第一章、简介

 

我们经常需要将程序中涉及到的某些信息保存起来,这样其他人或者其他程序才能在以后读取到。达到这个目的的方法有很多,但是对于开发人员来说,选择最适合的存储方法,则不是那么容易。而现在这种选择变得更加重要,因为越来越多的开发人员意识到,我们的注意力和工作重点应该放在业务逻辑上,至于储存方面的事情,很多都是重复劳动,应该交给各种库或者框架去完成。

 

保存信息最简单的方法可能就是直接将数据保存到文件里面了。Java的文件操作相对还是比较容易的,不过一些复杂的功能Java并没有提供。所以使用文件来存储的信息,只能是一些相对比较简单的(例如properties文件),或者是一些可能要脱离程序来月的的文件,例如日志文件或者配置文件。当需要保存的信息变得越来越复杂,或者保存的数据量越来越大,或者被保存的数据需要被多个进程访问,那么通过文件来保存的方式就不大适合了。这时我们需要选择其他更适合的技术了。

 

另外一个Java内置的技术就是序列化(Java serialization)。这项技术能够将对象图(object graph)的状态保存下来,以便日后的访问。然而这些class一旦改变Java serialization会在很短的时间变得非常复杂,所以只有当我们只需要将信息保存很短的一段时间的时候,我们才会选择这项技术。例如,object graph经常被用于进程间的通信。将serialization技术用户长时间的信息保存是不太现实的。

 

我们最常使用的持久化技术还是关系型数据库(relational database)。关系数据库管理系统已经存在数十年了,并且在这数十年间,一直都非常流行且实用。Java数据库连接接口(JDBC)提供了访问和操作数据库的统一标准。不过这个接口还是相对属于比较底层的操作,需要编写很多的代码,并且并没有将各个DBMS特有的SQL语句抽象出来。这就导致我们使用面向对象的开发语言来操作关系型数据的时候总会觉得这里或那里有很多的麻烦。所以很多开发人员都会通过将数据映射到class中,来让程序看起来比较清晰。但是这里面最大的问题就是,编写这些映射文件需要大量的重复劳动,并且需要很多琐碎的JDBC代码。


对象关系映射库能够帮助你自动创建与数据库的映射,这样就从某种意义上减少了我们很多代码的编写,并且让映射关系变得比较好维护。最新的Java持久化接口(JPA)提供了一套标准的模式来定义这些映射关系(通过注解的方式),并且提供了比较完善的方法来访问这些与数据库映射的实体对象。不少商业的或者开源的库都在某种程度上实现了JPA的功能,有些甚至提供了一些更加高级的JPA都没有的功能。例如,Hibernate就是其中一个最流行的JPA实现,它提供了例如对象缓存、状态保持、更多高级的关系映射以及一些能够提高性能与方便操作的特性。另外,Hibernate还是一个开源框架(由JBoss维护)。

 

虽然关系数据库通过JPA能够满足大多数应用程序,但是在一些情况下,他们仍然有很多限制,例如数据的关系非常复杂、无法事先被预测到,或者数据的结构经常会改动或需要用户定制数据的结构。在这些情况下,内容仓库(content repositories)就是一种更好的持久化选择。内容仓库可以说是一种关系型数据库与其他较复杂的系统(例如通过自定义文件存储)相互结合的产物。内容仓库同样提供了其他系统能够提供的典型功能,包括版本控制、索引、搜索、访问控制、事务以及监听器(observation)。因此,内容仓库通常用在内容管理系统(CMS)、文档管理系统(DMS)以及其他电子文档管理程序(例如文档、图片、多媒体、网页等)与其基本数据(例如作者、时间、状态、安全信息等)。Java内容仓库技术接口(Content Repository for Java technology API)提供了一套标准的接口来实现内容仓库。简称“JCR”。这套接口是由Java社区开发的,作为JSR-170的一部分,现在经过修订,被归到JSR-283下。

 

JBoss DNA项目就是基于JCR标准开发的统一的元数据(metadata)仓库系统。几乎所有的JCR API底层操作都被隐藏起来,并且能够被自动调用处理仓库内的信息。因此JBoss DNA能够向已经存在的仓库实现中添加数据。例如,JCR提供了一个功能,让用户能够上传文件到仓库中,并且为文件的内容制定索引以便于搜索。JBoss DNA在此基础上提供了一套专用于“有顺序的内容”(sequencing content)的库,这套库能够让文档中有意义的信息存储在仓库中,并且随后我们能够通过JCR API来搜索、存取和分析。

 

JBoss DNA提供了很多很好的功能。比如你可以创建联合仓库用来动态合并多个数据库、多个服务、多个程序或者其他JCR仓库里面的内容。JBoss DNA同样允许你创建自定义的基于视图的数据类型,并且可以为其定义一个角色来控制用户的访问。你也可以创建一个RESTful的接口来允许其他程序将符合JCR规范的内容写进你的仓库(这里提到的其他程序可以由任意语言编写,不限于Java)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值