注:希望大家看后,请给我一点评价,无论写的怎么样,希望你们能给我支持。提出你宝贵的意见。我会继续完善。谢谢您。朋友。
   今天又很高兴可以和大家一块探讨一下有关hibernate的知识,好长时间没有写关于hibernate的文章了。今天就主要讲述一下hibernate的核心知识。
第八章 Hibernate的入门
O/R Mapping基础
1、模型
1)模型用来表示真实世界的实体
在科学和工程技术领域,模型是一个很有用途的概念,它可以用来模拟一个真实的系统。在软件开发领域,模型用来表示真实世界的实体。
2)不同类型的模型
在软件开发的不同阶段,需要为目标系统创建不同类型的模型。
l  在分析阶段----需要创建概念模型
l  在设计阶段----需要创建域模型和数据模型
ü  其中,域模型是面向对象的,数据模型是面向关系的
ü  域模型和数据模型之间存在一种对象-关系映射。
 
3)概念模型
l  概念模型清楚地显示了问题域中的实体
不管是技术人员还是非技术人员都能看得懂概念模型,他们可以很容易地提出模型中存在的问题,帮助分析人员及早对模型进行修改。
在软件设计域开发周期中,模型的变更需求提出得越晚,所耗费得开发成本就越大。
l  概念模型描述了每个实体的概念和属性,以及实体之间的关系:一对一、一对多和多对多
在现实生活中都可以找到相应的例子,例如一只母鸡有很多小鸡是一对多关系,一位客户选购了很多商品,而这些商品也可以被许多客户选购,这是多对多关系。
4)关系数据模型
    到目前为止,关系数据库仍然是使用最广泛的数据库,它存储的是关系数据。关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:
l  一个或多个表
l  表的所有索引
l  视图
l  触发器
l  表与表之间的参照完整性
5)域模型
    域模型由以下内容组成:具有状态和行为的域对象;域对象之间的关系。
2、域对象
1)实体域对象
代表人、地点、事物或概念。通常,可以把业务领域中的名词,例如客户、订单、商品,当然也包括前面提到过的母鸡,作为实体域对象;
2)过程域对象
代表应用中的业务逻辑或流程。它通常依赖于实体域对象。
3)事件域对象
代表应用中的一些事件,例如异常、警告或超时等。
 
3、域对象之间的关系
    在域模型中,类之间存在下面的的几种关系。
1)关联(Association)
关联指的是类之间的引用关系(它使一个类指到另一个类的属性),这是实体域对象之间最普遍的一种关系。关联可以分为一对一、一对多和多对多关联。
2)依赖(Dependency)
依赖指的是类之间的访问关系。如果类A访问类B的属性或方法,或者说是A负责实例化B,那么可以说类A依赖类B
依赖对象通过调用被依赖对象的方法来获得服务。一种比较松散的关系,并且是短期的。我们的业务处理过程与对象往往依赖于我们的实体域对象。如在struts action中调用模型层的方法。
3)聚集(Aggregation)
聚集指的是整体与部分之间的关系,在实体域对象之间也很常见。其实聚合关系是关联关系的一种,是强的关联关系。聚合同时也体现整体和部分之间的关系。
例如,人与手就是聚集关系,在Person类中由一个hands集合,它存放被聚集的Hand对象:
public class Person
{
      private Set hands = new HashSet();
      …………
}
4)组合
也叫合成关系,组成关系是关联关系的一种,是比聚合关系强的关系。对象负责代表部分的对象的生命周期。
5)一般化(Generalization)
    一般化指的是类之间的继承关系。
4、既然聚合,组合关系属于关联关系,那么如何区分一般关联关系,聚合关系和组合关系呢?
1)一般关联
只要一个对象联系到另外一个对象就形成了关联关系。如:人和他的猫,黑豹乐队和窦魏,pc机和显示器。
2)聚合关系
一种强关联关系,它要求有部分和整体的关系,并且没有了整体,部分也可以独立存在。
在上面例子中人和它的猫显然没有部分和整体的关系,所以只能是一般的关联关系。而黑豹乐队和窦魏,窦魏等人组成,了黑豹乐队即:窦魏和黑豹是整体和部分的关系。而窦魏脱离了黑豹(早就离开了)更或者黑豹不存在了那么窦魏仍然可以以音乐人的身份存在(即对象仍然可以独立存在)所以它属于聚合关系。
组成关系是可以共享的。(窦魏也可以加入其他乐队)。
3)组合关系
一种更强的整体和部分的关系。它并且要求代表整体的对象负责代表部分的对象的生命周期,组成关系是不能共享的。如:pc机和显示器的关系。
4)注意的问题
如果两个实体是整体和部分的关系,那么它们到底是聚合还是组合,这取决于你的需求。比如说:pc机和显示器的关系,如果你的系统中,显示器脱离了pc机就不存在意义了也可以说:所有显示器的访问都是通过pc机进行的,那么你可以把关系设定为组合(如你在为一个只买品牌机的代理商作系统你可能是可以这么作的)。
如果你的显示器脱离的pc机仍然可以独立存在,也就是说在系统中可以直接访问显示器对象,那么你可以将关系设为聚合(如你在为一个买散件的代理商作系统你可能是可以这么作的)
以下部分以后在写.....