欢迎来到天天文库
浏览记录
ID:47105206
大小:62.84 KB
页数:18页
时间:2019-08-04
《hibernate一对一映射》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、hibernate一对一映射一、建立两个对象:一个Person,一个身份证这两个类是一对一的映射二、建立实体之间的关系:1、首先从Person的角度,先看看这个人,要知道他的身分证号是什么,所以要持有一个身分证的引用。反过来,拿到身分证的时候,要知道这个人。所以在IdCard中要持有Person的引用。所谓的单双向,是指从一个对象可以访问到另一个对象,从另一个对象访问不到它。而双向它们就可以互相访问了。从Person可以看到IdCard,从IdCard可以看到Person.这叫做双向。我们先看它的单向。如果只看单向,则Person要持有IdC
2、ard的引用。PersonIdCard这两个对象之间是有有关系的,所以有一个箭头连接两者。所以表面看它们的关系和用户和组的关系似乎是一样的。所以必须通过映射标签才能区别两者。 2、一对一关联映射有两种:一种是主键关联,一种是外键关联。主键关联就是我们的两个实体而生成的两个表的主键相同。也就是说,如果IdCard这个表里有一个主键是1,则Person这个表里也有一个主键是1.这样就不用加任何字段让主键一致。主键关联不用增加字段,还是原来的字段就可以了。因为person引用了idCard,所以idCard一定先有值。 三、如何映射实现主键一致。
3、 一、新建项目hibernate_one2one_pk_1:单向关联二、建立实体类1、IdCard类。packagecom.bjsxt.hibernate;publicclassIdCard{ privateintid; privateStringcardNo; publicintgetId(){ returnid; } publicvoidsetId(intid){ this.id=id; } publicStringgetCardNo(){ returncardNo; } publicvoidsetCardNo(Stringcard
4、No){ this.cardNo=cardNo; } }2、Person.classpackagecom.bjsxt.hibernate;publicclassPerson{ privateintid; privateStringname; IdCardidCard; publicIdCardgetIdCard(){ returnidCard; } publicvoidsetIdCard(IdCardidCard){ this.idCard=idCard; } publicintgetId(){ returnid; } publ
5、icvoidsetId(intid){ this.id=id; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } }三、实体有了之后,要建立映射文件,将两者的关系建立起来1、选建立简单的。就是IdCard.hbm.xml文件
6、"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 2、映射Perso
7、n,建立Person.hbm.xml文件Person一端的主键来源于IdCard一端的主键。Person的主键以外键的形式参照IdCard的主键。foreign主键生成策略,使用另外一个相关联的对象的标识符,通常和联合起来用。Person会把IdCard的标识拿过来,它用。 idCard上述含义是:在ForeignGenerator.class类中,有一个configure()方法,这个方法要读取“perperty
8、"的值,然后再拿到值的id来用。所以name必须用property. 加载的含义是:将Person中的1与IdCard中的1对比,如果相同,
此文档下载收益归作者所有