|
|
|
|
EOS小析之二 擦着持久化的边 发布时间:2005-08-26 00:00:00 作者:cservice 出处:goComDevCenter 语言:中文 阅读次数:1039次 |
| 数据持久化历来就是软件系统中非常关注的一块,同时也是各种平台、各个厂商屡
败屡战的的硝烟场。而对于数据库平台无关性的处理一直是数据持久化中的重中之
重,是平台厂商的必争之地;我也体验过许多数据库移植的悲剧,那种惨烈的场面
至今让我心有余悸。
Java是一个跨OS的平台,J2EE又是各大厂商(SUN、BEA、IBM、Oracle等)极力推
崇的企业级应用平台,自然数据持久化是其中极为重要的一部分。在J2EE的核心组
件中JDBC是很重要的,通过JDBC我们可以实现对所有支持JDBC访问的数据进行透明
访问,解决了大部分底层的数据库平台无关性问题(问题让各数据库厂商自己处理
了)。
OO的迅猛发展和成熟让很多人渴望将自己的程序完全OO化(笔者的一朋友前段时间
在自己网站上放出话来:让OO消灭RDBMS吧,呵呵,真是仁智两见啊);经验告诉
我们在程序代码中嵌入SQL代码在大部分情况下是一件很痛苦和没面子的事,极不
利于系统的维护,而且不利于实施组件化的软件设计思想(至于为什么要用组件化
的设计思想这里不作解释);于是在J2EE体系中出现了一种争议很大的组件Entity
EJB,通过实体Bean来隐藏与数据库相关技术打交道的细节,使Java系统更Pure;
在这里不去讨论实体Bean的对与错,只是列出它是实现数据库平台无关性的一种途
径之一(当然它还有很多其他的用途)。接下来,在Java世界里出现许多持久化方
案,以下列出引人注目的几个:
- Entity EJB
- Hibernate
- JDO
单纯从持久化来看都相差无几,都是基于JDBC做ORM及Manipulate;EOS的持久化方
案也不例外,通过设计期的ORM操作完成实体XML化,在EOS的运行核心期间以内存
对象(即DOM)进行内容交换,在边缘操作时(与数据库操作时)才通过ORM完成对
数据库的自动化操作,操作的主要工具被 EOS封装在底层。
以下通过一个插入实体到数据库的例子简单说明其工作过程:
1、根据R通过ORM映像成O(在EOS Studio中完成)。
2、建立、维护O的数据(在EOS Server中运行期程序员自己维护)。
3、通过database bizlet的BL_insertEntity方法启动插入操作。
4、通过持久化代理类DBBroker进行粘接操作。
5、通过ElementTranslator、ElementTranslator、FieldMap、FieldNode、
XMLTranslator、InsertSQLBuilder等工具及辅助类,完成从O对原生SQL语句生成
的工作(不便于透露里面的细节,请大家自己研究)。
6、依靠DBTableHandler、SQLStatement等类通过JDBC完成对数据库的最后一击,
彻底完成由O到R的过程。
遗憾的是EOS目前还没有实现R的关联体系,只能处理单个简单实体,对于1..N、
N..M等依赖关系目前是无法处理;但大家不要失望,有消息称EOS在 5.1?版中将
实现这个功能。
|
|
| 声明:本栏目转载文字、造型、样式、图形及程序如有来自网络,版权归原作者或首发媒体所有,欢迎任何个人访问或者转载,若有作者及出处有误,请来信说明,我们将及时更正。 |
|