今天看资料,看到了用户角色和权限的关系分析,一个角色可以有多个权限,一个权限可以对应多个用户。因此总体上是多对多的关系。但资料中在hibernate中配置时使用的是联合主键配置,当时看不太懂,网上查了hibernate关联映射学了半天还算有收获,但回头一看,还是没能解决资料上看不懂的这个问题,这才又把资料上的一个关键字composite加入关键字进行搜索,这才知道这是联合主键配置映射关系。在搜索是也找到了有人说不提倡使用联合主键:http://zhidao.baidu.com/link?url=b592rkm5zNtWeq64ccfhP5KmQ2wYhsTF0TCFZWC-FQMS5FQMgvO3uKDdMtZ0cfpoqWawVrfBbjbfcBFuPE6ycK
原来看了半天的hibernate实体关联关系映射,本以为掌握所有情况了(确实解决了所有情况,但没有用联合主键的方式),结果联合主键楞是看不懂了,可能看的太多迷糊了,这半天看的其实很够了,能应付任何情况了。
首先特别推荐这片博文:http://lavasoft.blog.51cto.com/62575/39398/ 罗列了所有的情况,给出每种情况的配置方案,看懂这些就足够了。
下面是自己总结:
按自己的习惯来对hibernate关联关系映射进行分类:
--> 一对一
--> 一对一单向关联
--> 一对一外键单向关联
--> 一对一主键单向关联
--> 一对一 连接表 单向关联
--> 一对一双向关联
--> 一对一外键单向关联
--> 一对一主键双向关联
--> 一对一 连接表 双向关联
--> 一对多与多对一
--> 一对多单向关联
--> 一对多外键单向关联
--> 一对多 连接表 单向关联
--> 多对一单向关联
--> 多对一外键单向关联
-->多对一 连接表 单向关联
--> 一对多(多对一)双向关联 (因为是双向关联,一对多也就是多对一)
--> 一对多(多对一)外键双向关联
-->一对多(多对一) 连接表 双向关联
--> 多对多
--> 多对多单向关联
--> 多对多双向关联
下面按照自己的理解,尽量将自己带入hibernate的角色(尽管有点可笑,hibernate只是机械的程序而已-_-||)。看看如果自己编程一行行的代码,怎么处理这么容易绕晕人的关联配置。
说明:以下例子都是以person类和address类为例,person中有id,name,age三个基本属性,address中有id,addressdetail两个基本属性。当关联查询时,会在类中写上另外一个类的成员属性。如在一对一单向关联时,person中有address的属性。(建议先看上文中特别推荐的博文,再顺着这篇文章理下思路)。
--> 一对一