网站大量收购独家精品文档,联系QQ:2885784924

Hibernate——对多和多对多关联关系映射xml和注解总结.docx

Hibernate——对多和多对多关联关系映射xml和注解总结.docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate——对多和多对多关联关系映射xml和注解总结

Hibernate(6)—— 一对多和多对多关联关系映射(xml和注解)总结涉及的知识点总结如下:One to Many 映射关系多对一单向外键关联(XML/Annotation)一对多单向外键关联(XML/Annotation)懒加载和积极加载一对多双向外键关联(XML/Annotation)Many to Many 映射关系多对多单向外键关联(XML/Annotation)多对多双向外键关联(XML/Annotation)set的inverse元素详解问题小结关联关系的优缺点  多对一单向外键关联关系  注意多对一关联是多方持有一方的引用。看一个例子,去淘宝购物,那么一个淘宝用户可以对应多个购物订单,如图所示:  多的一方是Orders,持有一方的引用,也就是Users,而在Users中无需作任何定义,从订单到用户的关系是单向多对一关联。对应数据库就是:  还有比如说学生和班级的关系,多个学生可以属于同一个班级,这就是从学生到班级也是典型的单向多对一关系,看代码实现:    基于注解的多对一单向外键关联:  单向多对一关联中,多方需要持有一方的引用,那么多方(学生类)需要额外配置,需要对持有的一方引用使用注解@ManyToOne (cascade={CascadeType.ALL}, fetch=FetchType.EAGER),设置为级联操作和饥渴的抓取策略,@JoinColumn(name=cid),而一方(教室类)无需做任何多方的定义。  注意;多方必须保留一个不带参数的构造器!?importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;//班级类,在多对一关系中属于一的方,不持有其他多余的配置,反而是被多方持有@Entitypublic class ClassRoom { private intcid;//班级编号 private String cname;//班级名称// 自动增长的主键 @Id @GeneratedValuepublicintgetCid() {returncid; }public void setCid(intcid) {this.cid = cid; }public String getCname() {returncname; }public void setCname(String cname) {ame = cname; }}View Code一方——班级类无需做多余的定义,下面是多方——学生实体和配置:?importjavax.persistence.CascadeType;importjavax.persistence.Entity;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.ManyToOne;//学生实体类,属于多对一的多方,持有班级(一方)的引用@Entitypublic class Students { private intsid; //编号 private String sname; //姓名 private ClassRoom classroom;//学生班级 //注意:多方一定要显式的定义不带参数的构造方法public Students() { }public Students(String sname) {this.sname = sname; }// 多方使用注解:@ManyToOne// fetch=FetchType.EAGER,急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。// 全部级联操作,referencedColumnName显式设置数据库字段名cid,不写默认就是和name一样的。 @ManyToOne (cascade={CascadeType.ALL}, fetch=FetchType.EAGER)@JoinColumn(name=cid,referencedColumnName=cid)publicClassRoomgetClassroom() {return classroom; }public void setClassroom(ClassRoom classroom) {this.classroo

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档