1.一对一
用户表可以查分成两个表,一个userInfo、一个userLogin表
实现方式:
(1)使用外键:外键+唯一性约束+非空约束
(2)公用主键:公用主键,从表的主键同时也是外键,来源于主表的主键。
2. 一对多
使用外键,实现一对多关系,外键可以为null
主从关系:一:主表,多:从表 ,从表的外键必须是主表的主键或者null。
实现方法:Student Clazz
step1:在一个一方创建对象引用集合 Set<>
private Set<Student> students = new HashSet<>(0);
step2:在多的一方创建对象引用
private Clazz clazz;
step3:在多方 实体中建立多对一关系-<many-to-one>【由多的一方维护关系】。
在一方配置<set>标签【可选】
public class Student implements Serializable { private Integer id; private String stuName; private Integer age; private Clazz clazz; //set,get省略 }
Student.java
public class Clazz implements Serializable { private Integer id; private String className; //实例化,可以防止空指针异常 private Set<Student> students = new HashSet<>(0); //长度设为0 }
Clazz.java
<hibernate-mapping package="cn.getword.domain"> <class name="Student" table="tb_student"> <id name="id" column="id" type="int"> <generator class="native"></generator> </id> <property name="stuName" column="username" /> <property name="age" column="age" /> <!-- name:用于指定引用对象在类中属性名称 class:一方的类的路径 column:外键名称 --> <many-to-one name="clazz" class="Clazz" column="clazz_id" /> </class> </hibernate-mapping>
Student.hbm.xml
<hibernate-mapping package="cn.getword.domain"> <class name="Clazz" table="tb_clazz"> <id name="id" column="id" type="int"> <generator class="native"></generator> </id> <property name="className" column="class_name" /> <!-- name:引用集合的名称 table:多方表明 --> <set name="students" table="tb_student"> <!-- key:多方表的外键名称 --> <key column="clazz_id"></key> <one-to-many class="Student"></one-to-many> </set> </class> </hibernate-mapping>
Clazz.hbm.xml
3. 多对多
使用中间表实现多对多关系。中间表只有两个字段,即两个表的主键,中间表的主键就是两个外键的联合主键。
end
原文地址:https://www.cnblogs.com/zhuxiang1633/p/9766865.html
时间: 2024-11-07 23:23:43