站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2EE 专题深入浅出Persistence Layer(1)

深入浅出Persistence Layer(1)

摘要:

深入浅出Persistence Layer(1)
from Martin的blog: http://www.matrix.org.cn/blog/martin/


Scott W. Ambler早在1998年就写出了关于ORM Persistence Layer的详细设计论文。 根据这个设计思路,Artem Rudoy 开发了一个开源的ORM实现 -- PL(Persistence Layer)开源项目。


不知道Ambler是否ORM的先驱, 但是可以肯定的是,Ambler的Object思想极大影响了ORM工具的发展。Apache ObJectRelationalBridge (OJB)的PersistenceBroker设计就和Ambler的论文同出一澈。


今天,ORM(Object Relation Mapping)的产品可谓百花齐放, 其中著名的有:Hibernate,OJB,Torque,TopLink,Castor ,还有不计其数的轻量级ORM产品。虽然ORM如此让人眼花缭乱,但是究其低层原理、设计思想,都如出自同一门派般的类似。


Hibernate中文网站长robbin如是说:"不管JDO也好,Hibernate也好,TopLink也好,CocoBase也好,还是 Castor,还是什么Torque,OJB,软件的使用和配置方法可以各异,但本质上都是ORM,都是对JDBC的对象持久层封装,所以万变不离其宗"。


让我们一起来看看开源项目PL的实现,一起来领会大师Ambler的设计,相信这一定是一段美妙的旅程。


一.概观
二.深入
三.浅出


一.概观
下图展示了Ambler 的持久层设计概要(Ambler, 1998b)。


这个设计吸引人的地方是应用程序开发者只需要知道下面几个类就可以将他们的对象持久化:PersistentObject、PersistentCriteria 类及其子类、PersistentTransaction和Cursor。其它的类并不会由应用程序代码直接访问,但是需要开发和维护它们以支持这些“public”的类。


类描述:
ClassMap 映射类,封装了将类映射到关系数据库的行为,包括类-数据表,类属性-表字段的关系映射。


Cursor 这个类封装了数据库中游标的概念。


PersistenceBroker 维护到诸如数据库或者文本文件等持久机制的连接,并且处理对象应用程序与持久机制之间的通信。


PersistentCriteria 这个类层次封装了根据指定条件进行获取、更新、删除等所需的行为。


PersistenceMechanism 一个封装了对文本文件、关系数据库、对象数据库等的访问方法的类层次。对关系数据库,这个树封装了复杂的类库,例如微软的ODBC 或者Java 的JDBC,这样可以保护你的组织不受这些类库改变的困扰。


PersistentObject 这个类封装了使单个实例持久化的行为,所有需要持久化的业务对象都从这里派生出来。


PersistentTransaction 这个类封装了支持持久机制的简单以及嵌套事务所需的行为。


SqlStatement 这个类层次知道如何根据ClassMap 对象构造insert、update、delete和select 语句。


以上的类代表了一种内聚的概念,换句话说,每个类只做一件事,并且做得很好。这是一个好的设计的基础。PersistentObject封装了使单个对象持久化的行为,而PersistentCriteria类层次封装了需要与一组持久对象协同工作的行为。


(con...)


↑返回目录
前一篇: 深入浅出Persistence Layer(2)
后一篇: TOMCAT与Resin之我的见解