zoukankan      html  css  js  c++  java
  • 一对一双向外键关联

    一对一双向外键关联
      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 @Entity
    10 public class Husband {
    11     
    12     private Integer id;
    13     
    14     private String name;
    15 
    16     private Wife wife;
    17     
    18     @Id
    19     @GeneratedValue
    20     public Integer getId() {
    21         return id;
    22     }
    23 
    24     public String getName() {
    25         return name;
    26     }
    27 
    28     @OneToOne//一对一的关系
    29     @JoinColumn(name="wifeId")//外键ID
    30     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 @Entity
    10 public class Wife {
    11     private Integer id;
    12     
    13     private String name;
    14     
    15     private Husband husband;
    16 
    17     @Id
    18     @GeneratedValue
    19     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 的 wife
    36     //@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 }
    View Code

    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 }
    View Code

    StudentIdCard.hbm.xml

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC
     3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 
     6 <hibernate-mapping package="com.bjsxt.hibernate">
     7     <class name="StudentIdCard" table="studentidcard">
     8         <id name="id" column="id">
     9             <generator class="native"/>
    10         </id>
    11         <property name="num" column="num"/>
    12         <many-to-one name="student" column="studentId" unique="true"></many-to-one>
    13     </class>
    14 </hibernate-mapping>

    Student.hbm.xml

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC
     3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     5 
     6 <hibernate-mapping package="com.bjsxt.hibernate">
     7     <class name="Student" table="student" dynamic-update="true">
     8         <id name="id" column="id">
     9             <generator class="native"/>
    10         </id>
    11         <property name="name" column="name"/>
    12         <property name="age" column="age"/>
    13         <property name="sex" column="sex"/>
    14         <property name="good" type="yes_no"/>
    15         <!-- 表示以StudentIdCard 为主导,自己不再产生额外的外键 -->
    16         <one-to-one name="studentIdCard" property-ref="student"></one-to-one>
    17     </class>
    18 </hibernate-mapping>

    jar 包链接: https://pan.baidu.com/s/1nvqK2F3 密码: 529r

    代码链接: https://pan.baidu.com/s/1dEXxUt7 密码: sxbb

  • 相关阅读:
    主席树学习笔记(静态区间第k大)
    p1156 题解(未完全解决)
    树上神奇 逆 逆序对(我的叫法)hh的小纸条 重中之重!!!!!
    二叉查找树学习笔记(BST)
    负环...坑点
    差分约束系统学习笔记
    tarjan学习(复习)笔记(持续更新)(各类找环模板)
    分层图食用简介
    js数组方法
    灵动标签调用父栏目下的所有文章
  • 原文地址:https://www.cnblogs.com/ShawnYang/p/6730504.html
Copyright © 2011-2022 走看看