周微民
(中国电子科技集团公司第二十八研究所 南京 210007)
目前的应用软件大多通过ODBC、JDBC、ADO、BDE等最原始、最直接的方法访问数据库,或是通过数据库厂商提供的接口访问数据库,这些方式虽然运行效率高,但是在程序中嵌入了大量的SQL语句,使得项目难以维护。如果关系数据模型非常复杂,直接写SQL需要专业的知识,对于企业级应用的开发人员,从头开发自己的持久化层是不可行的。同时由于数据标准、规范的建设滞后于信息系统的发展,各个信息系统中的数据库资源都存在着语义、结构等方面的异构性[1],因此需要对象关系映射层,把数据库访问操作封装起来,提供统一的对象接口,供业务调用。
对象/关系映射技术有多种实现,开源项目有 Hibernate[2]、NHibernate[3]、Castle 框 架。Hibernate是 “对 象—关系映射(Object—Relational Mapping,ORM)模块实现数据持久层的一个优秀的Java组件。ORM元素主要功能是实现实体域对象的持久化并封装[4]数据访问的细节。Hibernate对JDBC进行了非常轻量级的封装,其对象/关系数据库映射,持久化,事务管理,缓存机制的功能很好,但是Hibernate在复杂多表联合数据处理上的能力较弱;对于复杂的多表操作不适合用Hibernate。微软NHibernate是基于Microsoft.NET的O/R Map2ping持久化框架。它从数据库底层来持久化.Net对象到关系型数据库。它不仅管理.NET类到数据库表的映射,还提供数据查询和获取数据的方法[5]。但是其中的对象也只是相对比较简单的主表和几张子表之间关联的对象,对象间的复杂关联无法体现出来。Castle框架是针对.NET平台的一个非常优……