nameFay 2012-03-14
Hibernate关联关系是学习的难点,理清思路在看相应的书籍,也就不难了。
1)Hibernate是ORM规范的一种实现。
2)ORM规范三个环节,O:对象,R:Relation,指关系数据库,M:Mapping,在Hibernate中用配置文件实现。
3)关联关系是在O对象的概念范畴说的,也就是要在面向对象思想来理解。如果认为是Relation数据库的联系,则在学习关联关系时就容易迷糊。二者有一定联系,因为都是对现实世界的一种表述方式。
4)对象之间有依赖,聚集,继承,关联四种关系。关联是其中一种,是对象之间的相互引用关系。而引用是有方向性的,于是有单向和双向之分。对象之间有1-1,1-N,N-1,N-N关联关系之分,取决于对象本身的特征和特定的需求约定。
5)在R数据库端,只能通过PK和FK,建立一对一和一对多的联系,所谓主从表。对应多对多的联系需要引入中间表来分解为两个一对多的联系来设计。而要达到多对多查询的结果就要通过join连接表的形式。因此在O对象领域如果是多对多的关联,映射的时候就必须利用连接表来映射。
6)因此,对象的4种关联关系,加上单向和双向之分,以及连接表,可以分为:单向一对一,单向1对多,单向多对一,单向连接表的多对多;双向一对一,双向一对多,双向连接表的多对多。除了多对多的关联外,利用连接表没有实际意义,属于多此一举,可以不用考虑。
7)在实际中还要考虑通过主键关联还是外键关联,主键关联考虑由哪方来生成id,另外一方引用其id以达到id一致。但与关联关系种类划分无关,而是具体映射的字段定义略有不同。