1、ORM概念
ORM(Object Relational Mapping)对象关系映射,把实体对象映射到关系型数据库中。
2、ORM框架
ORM框架采用元数据来描述对象一关系映射,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。当前ORM框架主要有四种:Hibernate(Nhibernate),iBATIS,mybatis,EclipseLink。
3、Nhibernate
NHibernate提供.NET类到数据库表的映射和对关系型数据库的访问封装,改变以往通过底层ADO.NET 的原始API编程、直接运行SQL语句进行数据库查询和更新的做法,从而屏蔽技术细节,屏蔽各种数据库产品或同一数据库产品不同版本之间的差异性。以便使用者关注的重点放到具体的业务实现,无需为数据库和SQL语句的通用性花太多时间, 方便用户开发,并提供更好的跨数据库的移植性。
4、对象关系
存在两种类型的关系,一种是组合,一种是关联。两种关系映射在数据库层面是看不出有什么区别的,都是通过表外键表示,区别主要体现在业务语义上。
- 组合关系是指关系两端的对象由一个主对象,一个从对象构成,从对象的生命周期是在主对象的生命周期内。因此,必须得先创建主对象,再创建从对象。删除的时候正好相反,必须先删除从对象,再删除主对象。
- 关联关系是指关系两端的对象没有支配与被支配的区别,仅仅是引用关系。
在实际应用中,对组合关系的一次查询请求,所有被查询的主对象关联的对象必须全部查询出来(如果关联的对象列表记录太多,可对被关联的对象分页查询)。如果被关联的对象还有与其它对象的组合关系,则再次将这些组合关系所引用的对象按前面的方式查询出来,以此类推,直到没有关系或只有关联关系为止。而在删除请求中,删除主对象也就意味着需要把主对象中包含的所有组合关系的子对象数据一并删除,实际操作中是先删除子对象数据再删除主对象数据,如果子对象还包含有其它的组合关系,重复执行以上过程。整个过程类似于数据库的级联删除操作。
对关联关系的一次查询,只查出关联关系所引用的对象一级,不再像组合关系那样重复递归查询。
因此对一个普通的对象查询来说,可能既包含组合关系也包含关联关系,在每个组合关系分支处理完成后,如果存在关联关系的时候还需要按关联关系的处理方式再查询一次。查询的结果按照对应的关系依次组合成树状结构
5、元数据模型在项目中的应用
根据目前企业软件技术架构的发展趋势,采用B/S+SOA架构模式。将企业应用软件分为三个层次,数据层,业务处理层和前端展现层,根据每一层的特点抽象出各层的概念模型。
- 数据对象模型,主要关注数据库表的定义,这一层主要用于屏蔽不同的数据库物理模型。需要自定义字段时,不用修改物理数据库表,只需修改数据对象模型,然后通过相关的数据模型管理引擎将变化发布到物理数据库。在升级的时候,通过比较数据模型的差异,生成物理数据库表的修改脚本,从而完成物理数据表的升级。
- 业务对象模型,定义业务系统业务处理相关的核心对象。
- 界面对象模型,采用结构化的方式表示一个UI界面。