一对一(双,单向),多对一(双,单向),多对多(双,单向)
请给我详细讲解下,我知道如何配置annotation以及xml,但是我想弄清楚那三个的概念,具体点
也可以举个例子讲下,谢谢啦
只限于管理系统等非网络系统:
一对一:每个用户拥有一个唯一的登录名
一对多:一个部门下有多个用户
多对多:一个用户可以拥有多个角色,一个角色下可以有多个用户
当hibernate中配置了双向关联的时候,一方发生变化,另一方也会发生变化,例如删除部门操作,则相应部门下的人员也会被删除。若配置了单向的关联关系,例如只在用户一方配置了多对一,则删除部门,部门下的用户不会被删除。不知道我有没有说明白。
[quote]只限于管理系统等非网络系统:
一对一:每个用户拥有一个唯一的登录名
一对多:一个部门下有多个用户
多对多:一个用户可以拥有多个角色,一个角色下可以有多个用户
当hibernate中配置了双向关联的时候,一方发生变化,另一方也会发生变化,例如删除部门操作,则相应部门下的人员也会被删除。若配置了单向的关联关系,例如只在用户一方配置了多对一,则删除部门,部门下的用户不会被删除。不知道我有没有说明白。[/quote]
够明白了。 :idea:
annotation以及xml 配置例子,google下,有很多的。建议你找本书(例如 深入浅出Hibernate) 看完,然后把书中例子敲完,你绝对比一般的号称会 Hibernate的人强。
谈下我的理解:
1.一对一: 一个人对应一个身份证。
单向: 如果只配置人到身份证的关联的话,可以通过人的id,比如person_id得到身份证的信息,但是不能由身份证id得到人的信息,如果希望通过身份证的信息得到人的信息,必须得配置双向关联。
双向: 同时配置person到personCard和personCard到person的关联。
2.多对一:一个用户对应多个地址,反过来就是多对一的情况,其实多对一安装一对多的方式来考虑可能更容易理解些。
单向(按一对多的方式考虑):只在"一"的一方,在这个例子中即用户这一方,配置关联关系,可以通过用户对象级联到地址对象,里面有个cascade配置,表示级联的方式。这中方式只能通过"一"的一方来操作"多"的一方,反过来就不行。
双向:同时配置两边分别关联对方,但只能有一方是主控方,主控方负责维护管理关系,
在one-to-many 里面有个inverse属性。
在一对多关联关系中,推荐用多的一方为主控方,有助于改善性能,比如在公司里面,一个领导记住他的多个下属的电话号码肯定没有每个下属记住领导的电话号码方便。
多对多: 据Java Persistence With Hibernate 一书里面记载,不推荐用多对多方式,因为要加一个中间表。关系不好维护。