- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hibernate 一对多 多对一 关系的理解
hibernate 一对多 多对一 关系的理解
单向多对一和双向多对一的区别?
只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系部门--人员使用人员时如果只需要获取对应部门信息(user.getdeptarment())不需要 从部门下的人员信息时,就配置成单向 多对一使用部门时如果只需要获取部门下人员信息(deptartmanet.getusers())不需要 从人员获取部门信息时,就配置成单向 一对多既要获取部门下人员 deptartmanet.getusers()又要从人员获取部门信息 user.getdeptarment()那就 配置成双向一对多,也就是双向多一看需求来配置了。
2、策略关联关系的本质是将关联关系映射到数据库中。关联关系在对象模型中体现为内存中的一个或多个引用。??一对多关系: 一对多关系 分为“单向一对多/多对一关系”和“双向多对一”关系。
??????“单向一对多/多对一关系”只需在“一”/“多”方进行配置,
??????“双向多对一关系”需要在关联双方均加以配置。 双向多对一关联就是在多方和一方都进行配置,并在“一”?方通过属性inverse=true设置控制关系反转
????注:单向多对一关联是最常见的单向关联关系。
????注:双向多对一关联是最常见的双向关联关系。双向多对一关联实际上是“多对一”与“一对多”关联的组合。多对一及一对多关联映射的区别(单向):不管多对一还是一对多,都是在多的一端添加一个外键指向一的一端,只不过是多对一是在多的一端为其自己添外键,而一对多则是在一的一端为多的一端添加外主键。
?模型:一个用户组(group)对应多个用户(user)。
多对一关联映射:是在多的一端添加一个外键指向一的一端,它维护的关系为多到一的关系,如:当载入一个用户(user)时将会同时载入组(group)的信息。它的关系映射将写在多的一端(user):????
?many-to-one?name=group?column=relatedGroup?cascade=all?/????此时它在多的一端(user)添加了一个外键“relateGroup”指向一的一端。在多的一端通过group维护一的一端。一对多关联映射:是在一的一端为多的一端添加外主键,它维护的关系为一到多的关系,如:当载入一个组(group)时将会同时载入此组用户(user)的信息。它的关系映射将写在一的一端(group):???????????????????????????
?set?name=users?order-by=name?key?column=relatedGroup/
?one-to-many?class=com.dvnchina.hibernate.User/???
?/set??????
此时通过key?column=relatedGroup/在多的一端(user)添加了一个外键“relateGroup”指向一的一端。在一的一端通过users维护多的一端。??总之,一对多和多对一的映射策略是一致的,都是通过在多的一端添加一个外键指向一的一端,只是站的角度不同。
个人总结:
1、cascade写在某方,表示在操作此方时,与此方关联的另一方是否被操作。此关联是指操作时对象中包含的对象(比如保存部门时,dept.setEm(em),em对象也被保存)。
比如部门表--员工表,双向多多对一,cascade=delete写在部门表,那么表示在删除部门时与此部门相关的员工也全部被删除!
2、关系的维护(inverse)通常都是交给多方
文档评论(0)