欢迎来到天天文库
浏览记录
ID:14269370
大小:73.00 KB
页数:6页
时间:2018-07-27
《hibernate一对多、一对一、多对多映射之xml篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、一对多/多对一1.确定谁是一方,谁是多方。某表的主键在另一表中为外键,则某表为一方。如学生和班级的对应关系,一个班级对应多个学生,所以班级为一方,学生为多方。2.一方和多方po中部分代码的书写ClassInfo一方:set<多方类型>的属性代码如:privateSetstuSet;Student多方:一方类型的属性注意:不写外键字段。代码如:privateClassInfoclassInfo;3、配置ClassInfo一方:子元素:2、/>Student多方:4、测试添加记录时的dao一部分代码ClassInfoc=newClassInfo();c.setCname("aaa");Students=newStudent();s.setStuName("gsc");s.setAge(12);s.setEmail("gsc@124.com");SetstuSet=newHashSet3、();stuSet.add(s);c.setStuSet(stuSet);Sessionsession=HibUtil.getSession();Transactiontx=session.beginTransaction();session.save(c);tx.commit();session.close();二一对一1.外键关联:一对多的基础上在外键字段上加个唯一约束构成1对1的关系。1.1确定谁是一方,谁是多方。因为是一对一的关系,所以任何一方是一方或多方都可以,但是当选定哪一方是一方,哪一方是多方后,配置信息就必须按照一方和多方4、的信息分别去配置1.2po:双方各有一个对方类型的属性po中的部分代码Address类中:privateCompanycompany;Company类中:privateAddressaddress;1.3配置一方:多方:如选择Address为一方,Company为多方5、f="companyId"cascade="all">1.4测试添加记录时的dao一部分代码Companyc=newCompany();c.setCompanyName("苹果");Addressa=newAddress();a.setAddressName("美国");//c.setAddress(a);//上边的注释的代码可以不写,6、但下边一行的代码必须写,如果不写的话,虽然多方的记录也被添加但外键值为空a.setCompany(c);Sessionsession=HibUtil.getSession();Transactionts=session.beginTransaction();session.save(a);ts.commit();session.close();1.主键关联:双方一对一关系的数据保证主键值一致即可。2.1都是一方2.2po:双方各有一个对方类型的属性,并且生成的两个表主键值相同po中的部分代码Man类中:privateIntegermarriageId;pr7、ivateWomanwoman;Woman类中privateIntegermarriageId;privateManman;其中生成的两个表主键相同,是marriageId属性对应的column字段1.3配置主键生成方:主键采用自定义或者序列都行。如:Man主键seq_tab_man8、--一方配置-->
2、/>Student多方:4、测试添加记录时的dao一部分代码ClassInfoc=newClassInfo();c.setCname("aaa");Students=newStudent();s.setStuName("gsc");s.setAge(12);s.setEmail("gsc@124.com");SetstuSet=newHashSet
3、();stuSet.add(s);c.setStuSet(stuSet);Sessionsession=HibUtil.getSession();Transactiontx=session.beginTransaction();session.save(c);tx.commit();session.close();二一对一1.外键关联:一对多的基础上在外键字段上加个唯一约束构成1对1的关系。1.1确定谁是一方,谁是多方。因为是一对一的关系,所以任何一方是一方或多方都可以,但是当选定哪一方是一方,哪一方是多方后,配置信息就必须按照一方和多方
4、的信息分别去配置1.2po:双方各有一个对方类型的属性po中的部分代码Address类中:privateCompanycompany;Company类中:privateAddressaddress;1.3配置一方:多方:如选择Address为一方,Company为多方5、f="companyId"cascade="all">1.4测试添加记录时的dao一部分代码Companyc=newCompany();c.setCompanyName("苹果");Addressa=newAddress();a.setAddressName("美国");//c.setAddress(a);//上边的注释的代码可以不写,6、但下边一行的代码必须写,如果不写的话,虽然多方的记录也被添加但外键值为空a.setCompany(c);Sessionsession=HibUtil.getSession();Transactionts=session.beginTransaction();session.save(a);ts.commit();session.close();1.主键关联:双方一对一关系的数据保证主键值一致即可。2.1都是一方2.2po:双方各有一个对方类型的属性,并且生成的两个表主键值相同po中的部分代码Man类中:privateIntegermarriageId;pr7、ivateWomanwoman;Woman类中privateIntegermarriageId;privateManman;其中生成的两个表主键相同,是marriageId属性对应的column字段1.3配置主键生成方:主键采用自定义或者序列都行。如:Man主键seq_tab_man8、--一方配置-->
5、f="companyId"cascade="all">1.4测试添加记录时的dao一部分代码Companyc=newCompany();c.setCompanyName("苹果");Addressa=newAddress();a.setAddressName("美国");//c.setAddress(a);//上边的注释的代码可以不写,
6、但下边一行的代码必须写,如果不写的话,虽然多方的记录也被添加但外键值为空a.setCompany(c);Sessionsession=HibUtil.getSession();Transactionts=session.beginTransaction();session.save(a);ts.commit();session.close();1.主键关联:双方一对一关系的数据保证主键值一致即可。2.1都是一方2.2po:双方各有一个对方类型的属性,并且生成的两个表主键值相同po中的部分代码Man类中:privateIntegermarriageId;pr
7、ivateWomanwoman;Woman类中privateIntegermarriageId;privateManman;其中生成的两个表主键相同,是marriageId属性对应的column字段1.3配置主键生成方:主键采用自定义或者序列都行。如:Man主键seq_tab_man8、--一方配置-->
8、--一方配置-->
此文档下载收益归作者所有