我的O/RMAPPING(HIBERNATE)方法小结
百度广告
(一)对象之间的关系:
依赖对象通过调用被依赖对象的方法来获得服务。一种比较松散的关系,并且是短期的。我们的过程与对象往往依赖于我们的实体域对象。如在struts 的 action中调用模型层的方法。
它使一个类指到另一个类的属性。长期的
聚合关系是关联关系的一种,是强的关联关系。聚合是整体和部分之间的关系。
也叫合成关系,组成关系是关联关系的一种,是比聚合关系强的关系。对象负责代表部分的对象的生命周期。
注:既然聚合,组合关系属于关联关系,那么如何区分一般关联关系,聚合关系和组合关系呢?
一般关联:只要一个对象联系到另外一个对象就形成了关联关系。如:人和他的猫,黑豹乐队和窦魏,pc机和显示器。
组合关系:一种更强的整体和部分的关系。它并且要求代表整体的对象负责代表部分的对象的生命周期,组成关系是不能共享的。如:pc机和显示器的关系。
我觉得:如果两个实体是整体和部分的关系,那么它们到底是聚合还是组合,这取决于你的需求。比如说:pc机和显示器的关系,如果你的系统中,显示器脱离了pc机就不存在意义了,也可以说:所有显示器的访问都是通过pc机进行的,那么你可以把关系设定为组合(如你在为一个只买品牌机的代理商作系统你可能是可以这么作的)。如果你的显示器脱离的pc机仍然可以独立存在,也就是说在系统中可以直接访问显示器对象,那么你可以将关系设为聚合(如你在为一个买散件的代理商作系统你可能是可以这么作的)
这个我不想多讲了,用过面向对象的语言都应该知道。
(二)关系数据库的关系
一对多
多对多
1.继承:
策略1继承树的每个类对应一个表
策略2继承树的根类对应一个表
策略3继承树的叶子类对应一个表
2.关联
一半有两种策略:
+unique="true" (唯一的外键)
策略2:共享主键
(既是主键又是外键)
2.2 一对多(无需多说)
2.4 多对多
C表中的所有属性即为主键又为外键分别参照A,B两表。
策略2:将多对多拆分成两个一对多:
C表又自己的主键
C表中不可以有其他属性
注意:策略1和策略2的不同在于:策略2引入了新的对象而策略1没有。这是因为这样:策略1的c表不能又自己的东西。而策略2有。
上面说过:聚合与组成是关联的一种所以他们也符合以上策略。
3.依赖
O/R MAPPING (HIBERNATE)方法小结 (补充内容):
1.一般关联:
C表的主键有分别指向A,B两表(外键)。当指向一方的外键unique="true"即唯一,那么这一方为"一",反之为"多"的一方。这样就可以形成一般的关联关系。但是注意的是:c表不映射为对象。C表也没有自己的属性。
当实体A的非主键列中有一个引自实体B的时候,这种关系是B聚合A。如果这种引用是强制性的,则是合成关系,否则为聚合关系。是否为强制性,只需要将引用列设为非空即可;
当实体A的主键引用自实体B的时候(即为外键),那么A继承 B。
总结:我觉得O/RM的方法有很多,我们可以看到"按外键"的方法思路很清晰。但是它在解决一般的关联的时候总是引入另外一张表这样势必影响效率。另外,既然聚合和组合是关联的一种那么即使是组合关系我也把它看成一般关联,也不算错的。关系数据库一开始就不是为了面向对象的语言服务的,所以我们在这里映射无论那种方法似乎都不能说是完全的,正确无误完成了O/RM。
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>