数据持久层的出现是为了屏蔽数据库的差异性,让数据库对上层应用而言是透明的,本章的方法是通过语法和语义的分离,按需生成特定数据库的操作语句。
(1)与基于数据访问对象模式DAO的持久层解决方案比较
相较于基于DAO的持久层解决方案而言,由于DAO模式从本质上来说,只是通过隐藏数据库操作的具体实现细节来实现持久层的,也就是说代码中对数据库操作的具体实现细节部分只是改变了位置,并没有消失,这样在需要从一个数据库移植到另一个数据库时,需要修改的代码不会发生变化。而本章给出的方法,能做到自动将一个数据库上的操作转换为另一个数据库上的操作。因此本章给出的方法能更快速实现对代码的修改,减轻程序员的工作量,这一优势会随着应用软件规模的增大而更加明显。
(2)与基于数据关系映射模式ORM的持久层解决方案比较(www.xing528.com)
相较于基于ORM的持久层解决方案而言,由于分离了语法和语义,同一个语义与不同数据库系统所支持的语法相结合就能得到针对该数据库系统的操作语句,因此本章给出的方法同样具备通用性。然而本章给出的方法更为彻底且效率更高,这是因为语法和语义一次结合就能得到针对特定数据库的操作语句,而数据持久层需要每次都进行对象和关系的映射,正因为此,数据持久层会产生更多的内存消耗,并且会使得执行操作语句所需要的时间变得更长。另外,有的数据持久层技术虽然功能很强大,但是在利用某些数据库系统中的高级特性时是受限的,例如针对Oracle中的特有函数以及自定义函数,数据持久层Hibernate不仅要修改其配置文件,还需要修改其中的函数实现,而本章给出的方法不存在类似问题。
(3)与其他模式的持久层解决方案比较
相较于其他模式的持久层解决方案而言,本章给出的方法比J2EE框架中的BMP(Bean-Managed Persistence,Bean 管理持久化)模式和CMP(Container-Managed Persistence,容器管理持久化)模式更为轻量级和更为简单易操作,同时由于是对代码中的硬编码进行彻底替换,因此不会对数据访问效率带来额外的影响,也不会有更多的系统资源消耗,在数据操作出现错误时,可以清晰跟踪处理过程中数据操作的状态流转。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。