Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结

Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结

ID:36437808

大小:357.02 KB

页数:35页

时间:2019-05-10

Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结_第1页
Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结_第2页
Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结_第3页
Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结_第4页
Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结_第5页
资源描述:

《Hibernate(V)——一对多与多对多关联关系映射(xml与注解)总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Hibernate(6)——一对多和多对多关联关系映射(xml和注解)总结涉及的知识点总结如下:·OnetoMany映射关系o多对一单向外键关联(XML/Annotation)o一对多单向外键关联(XML/Annotation)o懒加载和积极加载o一对多双向外键关联(XML/Annotation)·ManytoMany映射关系o多对多单向外键关联(XML/Annotation)o多对多双向外键关联(XML/Annotation)oset的inverse元素详解·问题小结·关联关系的优缺点  多对一

2、单向外键关联关系  注意多对一关联是多方持有一方的引用。看一个例子,去淘宝购物,那么一个淘宝用户可以对应多个购物订单,如图所示:  多的一方是Orders,持有一方的引用,也就是Users,而在Users中无需作任何定义,从订单到用户的关系是单向多对一关联。对应数据库就是:  还有比如说学生和班级的关系,多个学生可以属于同一个班级,这就是从学生到班级也是典型的单向多对一关系,看代码实现:    基于注解的多对一单向外键关联:  单向多对一关联中,多方需要持有一方的引用,那么多方(学生类)需要额外配

3、置,需要对持有的一方引用使用注解@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER),设置为级联操作和饥渴的抓取策略,@JoinColumn(name="cid"),而一方(教室类)无需做任何多方的定义。  注意;多方必须保留一个不带参数的构造器! importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence

4、.Id;//班级类,在多对一关系中属于一的方,不持有其他多余的配置,反而是被多方持有@EntitypublicclassClassRoom{privateintcid;//班级编号privateStringcname;//班级名称//自动增长的主键@Id@GeneratedValuepublicintgetCid(){returncid;}publicvoidsetCid(intcid){this.cid=cid;}publicStringgetCname(){returncname;}publi

5、cvoidsetCname(Stringcname){this.cname=cname;}}ViewCode一方——班级类无需做多余的定义,下面是多方——学生实体和配置: importjavax.persistence.CascadeType;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.I

6、d;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;//学生实体类,属于多对一的多方,持有班级(一方)的引用@EntitypublicclassStudents{privateintsid;//编号privateStringsname;//姓名privateClassRoomclassroom;//学生班级//注意:多方一定要显式的定义不带参数的构造方法publicStudents(){}publicStud

7、ents(Stringsname){this.sname=sname;}//多方使用注解:@ManyToOne//fetch=FetchType.EAGER,急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。//全部级联操作,referencedColumnName显式设置数据库字段名cid,不写默认就是和name一样的。@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER)@JoinColumn(name="cid",r

8、eferencedColumnName="cid")publicClassRoomgetClassroom(){returnclassroom;}publicvoidsetClassroom(ClassRoomclassroom){this.classroom=classroom;}//自动增长主键@Id@GeneratedValuepublicintgetSid(){returnsid;}publicvoidsetSid(intsid){this.sid=sid;}publicS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。