首页 理论教育 常用方法:基于本体的跨平台应用软件移植技术研究成果

常用方法:基于本体的跨平台应用软件移植技术研究成果

时间:2023-11-17 理论教育 版权反馈
【摘要】:DAO正是通过这种方法将数据库访问操作代码从应用软件的业务逻辑代码中分离,以实现数据持久化逻辑与应用逻辑的分离。J2EE框架还提出了CMP模式,由于它提供了对象—关系映射服务,因此本书将它归类于基于数据关系映射模式[84][85]的持久层解决方案。它提供了用于存取数据对象的标准化API,较之CMP,它更轻量级。至此ORM模式[74][77]逐渐成熟,它提供了一种概念性的、标准化的、易于理解的模型化数据的方法。

常用方法:基于本体的跨平台应用软件移植技术研究成果

在基于数据访问对象模式(Data Access Object,DAO)[80]的持久层解决方案中,数据访问对象以应用程序编程接口的方式向上层应用提供数据库操作所需的访问机制,而将数据库操作的具体实现细节隐藏起来,当需要从一个数据库移植到另一个数据库时,接口不需要改变,改变的是被隐藏起来的具体实现细节,而由于接口没有发生改变,因此对于上层应用而言,改变的具体实现细节是被屏蔽的。DAO正是通过这种方法将数据库访问操作代码从应用软件的业务逻辑代码中分离,以实现数据持久化逻辑与应用逻辑的分离。

可以看出,DAO是通过隐藏数据库操作的具体实现细节来实现持久层的,虽然做到了数据持久化逻辑与应用逻辑的分离,但是却没有在数据库发生变化时减少对代码的修改量,它只是将原来在应用逻辑处的修改转移到了被隐藏起来的数据库操作的具体实现细节部分,事实证明,随着应用软件规模的增大,代码修改的工作量会呈几何增长。

针对这一局限性,出现了主动域对象模式,它在实现中封装了关系数据模型和数据访问细节。J2EE框架中的BMP(Bean-Managed Persistence,Bean 管理持久化)模式[78][82][83]便采用的是主动域对象模式,它由实体EJB本身来管理数据访问细节,由于主动域对象仍然位于业务逻辑层,因此它并没有实现真正意义上的持久化层。此处不作详细讨论。

J2EE框架还提出了CMP(Container-Managed Persistence,容器管理持久化)模式,由于它提供了对象—关系映射服务,因此本书将它归类于基于数据关系映射模式(Data/Relation Mapping,ORM)[84][85]的持久层解决方案。CMP模式使用EJB来代替数据访问对象DAO,定义了基于O/R映射的持久化API,在被隐藏起来的数据库操作的具体实现细节部分只有数据对象,烦琐的数据库操作由底层机制来实现,这样便大大简化了具体实现细节部分的代码。

但是它同样存在局限性,首先,CMP模式比较复杂,并且EJB并不适合处处使用;其次,在实际应用中发现它的数据访问效率不高,同时需要占用大量的系统资源,难以支撑对海量数据的处理;再次,由于具体的数据操作是由底层机制来完成的,开发人员无法跟踪数据操作的状态,故在出现错误时,难以迅速定位错误发生的原因。(www.xing528.com)

与CMP模式一样,SUN公司提出的JDO(Java Data Objects)模式[81][86]也不是严格意义上的基于ORM的持久层解决方案。它提供了用于存取数据对象的标准化API,较之CMP,它更轻量级。并且它可以将数据对象持久化到任意一种存储系统中,这使得应用的可移植性更强,但是美中不足的是它的产品在性能优化上却较差。

至此ORM模式[74][77]逐渐成熟,它提供了一种概念性的、标准化的、易于理解的模型化数据的方法。它通过在业务实体对象与数据库之间建立的映射关系,避免了在操作业务对象的时候去和复杂的SQL语句打交道。换句话说,它以一种中间件的形式实现了业务实体对象到数据库数据的映射。

Hibernate[75][76][79]是目前应用较为广泛的基于数据关系映射模式(Data/Relation Mapping,ORM)的持久层解决方案,它通过对JDBC进行轻量级的对象封装,使得可以用对象编程的思维来操作数据库,它还提供了Java类到数据表之间的XML映射,以及数据的查询和恢复机制。由于Hibernate从本质上来说就是一种中间件,它所承担的任务是完成数据从一种形式转换成另一种形式的过程,因此这必然增加执行时的开销,这一局限性在所有基于数据关系映射模式(Data/Relation Mapping,ORM)的持久层解决方案中都是存在的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈