一对一双向外键关联
a) 项目名称:hibernate_0700_one2one_bi_fk b) Annotation:@One2One(mappedBy) c) xml:<many-to-one unique> <one-to-one property-ref> d) 规律:凡是双向关联,必设(最佳实践) mappedBy注解:
配置 Husband 和 Wife 一对一双向外键关联
Husband:
1 package com.bjsxt.hibernate; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.JoinColumn; 7 import javax.persistence.OneToOne; 8 9 @Entity10 public class Husband {11 12 private Integer id;13 14 private String name;15 16 private Wife wife;17 18 @Id19 @GeneratedValue20 public Integer getId() {21 return id;22 }23 24 public String getName() {25 return name;26 }27 28 @OneToOne//一对一的关系29 @JoinColumn(name="wifeId")//外键ID30 public Wife getWife() {31 return wife;32 }33 34 public void setId(Integer id) {35 this.id = id;36 }37 38 public void setName(String name) {39 this.name = name;40 }41 42 public void setWife(Wife wife) {43 this.wife = wife;44 }45 }
Wife
1 package com.bjsxt.hibernate; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.JoinColumn; 7 import javax.persistence.OneToOne; 8 9 @Entity10 public class Wife {11 private Integer id;12 13 private String name;14 15 private Husband husband;16 17 @Id18 @GeneratedValue19 public Integer getId() {20 return id;21 }22 23 public void setId(Integer id) {24 this.id = id;25 }26 27 public String getName() {28 return name;29 }30 31 public void setName(String name) {32 this.name = name;33 }34 35 @OneToOne(mappedBy="wife")//wife 为 husband 的 wife36 //@JoinColumn(name="husbandId")37 public Husband getHusband() {38 return husband;39 }40 41 public void setHusband(Husband husband) {42 this.husband = husband;43 }44 }
XML 配置
Student(学生) 和 StudentIdCard(学生证) 为一对一双向外键关联
Student
1 package com.bjsxt.hibernate; 2 3 public class Student { 4 5 private Integer id; 6 7 private String name; 8 9 private Integer age;10 11 private String sex;12 13 private boolean good;14 15 private StudentIdCard studentIdCard;16 17 public Integer getId() {18 return id;19 }20 21 public void setId(Integer id) {22 this.id = id;23 }24 25 public String getName() {26 return name;27 }28 29 public void setName(String name) {30 this.name = name;31 }32 33 public Integer getAge() {34 return age;35 }36 37 public void setAge(Integer age) {38 this.age = age;39 }40 41 public String getSex() {42 return sex;43 }44 45 public void setSex(String sex) {46 this.sex = sex;47 }48 49 public boolean isGood() {50 return good;51 }52 53 public void setGood(boolean good) {54 this.good = good;55 }56 57 public StudentIdCard getStudentIdCard() {58 return studentIdCard;59 }60 61 public void setStudentIdCard(StudentIdCard studentIdCard) {62 this.studentIdCard = studentIdCard;63 }64 65 }
StudentIdCard
1 package com.bjsxt.hibernate; 2 3 public class StudentIdCard { 4 5 private Integer id; 6 7 private String num; 8 9 private Student student;10 11 public Integer getId() {12 return id;13 }14 15 public void setId(Integer id) {16 this.id = id;17 }18 19 public String getNum() {20 return num;21 }22 23 public void setNum(String num) {24 this.num = num;25 }26 27 public Student getStudent() {28 return student;29 }30 31 public void setStudent(Student student) {32 this.student = student;33 }34 35 }
StudentIdCard.hbm.xml
1 2 5 67 8 149 1110 12 13
Student.hbm.xml
1 2 5 67 8 189 1110 12 13 14 15 16 17
jar 包链接: https://pan.baidu.com/s/1nvqK2F3 密码: 529r
代码链接: https://pan.baidu.com/s/1dEXxUt7 密码: sxbb