- 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
一对多关联映射(one-to-many单向)
一、对象模型
在对象模型中一对多关联映射,通常在一的一端要使用集合来表示关联关系。
比如班级--学生就是一个典型的一对多的关系。
说明:之所以在一的一端需要持有对多的一端集合引用,是为了方便在加载班级的时候同时加载对应班级
下面的学生。
二、原理
【实现原理】先有班级[one]后有学生[many],实现一对多需要在多的一端建立外键指向一的端
one-to-many单向:就是能从Cleasses中访问到对应的学生,反之无效.
三、面试题
【面试题】多对一与一对多的区别与联系?
一对多关联映射利用了多对一关联映射原理
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一(PersonGroup)
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多(ClassesStudents)
总结:也就是说一对多和多对一的映射策略是一样的,只是角度不同
四、业务模型(实体类)
ClassesPOJO.java
private int id;
private String name;
private Set students; //一指向多
StudentPOJO.java
private int id;
private String name;
五、配置文件
(1)一的一端(Classes.hbm.xml)的配置:需要加入set标签
set name=students(Classes实体类中Set接口类型的变量名)
key column=classid(对应于多的一端在数据库中的外键)/
one-to-many class=多的一端实体类的路径
/set
hibernate-mapping package=com.tarena.hibernate
class name=Classes table=t_classes
id name=id
generator class=native/
/id
property name=name/
set name=students
key column=classesid/
one-to-many class=Student/
/set
/class
/hibernate-mapping
(2)多的一端(Student.hbm.xml)的配置:
hibernate-mapping
class name=com.bjsxt.tarena.Student table=t_student
id name=id
generator class=native///ID自动增长
/id
property name=name/
/class
/hibernate-mapping
六、代码测试
(1)save操作()
存储策略:因为在Classes实体类(One)中存在一个对Student实体类的Set集合引用,所以要先存Student
对象,然后在为Student分配班级。
public void testSave1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//创建学生1
Student student1 = new Student();
student1.setName(张三);
session.save(student1);//记得要先保存学生信息到数据库
//创建学生2
Student student2 = new Student();
student2.setName(李四);
session.save(student2);//记得要先保存学生信息到数据库
//将学生放入Classes实体的Set集合
Set s
您可能关注的文档
最近下载
- 小区挡土墙监测的方案.doc
- 组织安全绩效提升与重大事故预防HOP.pdf VIP
- 2021版35kV~750kV 变电站通用设备技术规范第13部分:接地变压器及消弧线圈成套装置.pdf VIP
- 心脏横纹肌瘤的科普知识课件.pptx VIP
- 2021版35kV~750kV 变电站通用设备技术要求及接口规范第2部分:高压并联电抗器.pdf VIP
- 新概念英语二册Mp3教程附音频下载-英语听力_0.pdf VIP
- 2021版35kV~750kV 变电站通用设备技术规范第9部分:低压并联电抗器.pdf VIP
- 2021版35kV~750kV 变电站通用设备技术规范第第12部分:站用变压器.pdf VIP
- 初一有理数计算700题.docx VIP
- 市政供热管网施工技术的方案.doc
文档评论(0)