分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

hibernate表关系

发布时间:2023-09-06 02:17责任编辑:郭大石关键词:暂无标签

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

hibernate表关系

原文地址:https://www.cnblogs.com/zhuxiang1633/p/9766865.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved