Hibernate 之实体表关系设计

2024-08-27 21:58
文章标签 设计 关系 hibernate 实体

本文主要是介绍Hibernate 之实体表关系设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

Hibernate 之实体表关系设计

 

 

前言:

      在Hibernate 中多表之间关系如何设计?

      一般的实体设计,我们比较系统的是会用rose或EA设计好,表并且和表之间的关系。

(1)类的实体,实体中的属性


(2)每个实体类之间的关联关系

           

 

关联关系用集合,比如:部门中有很多的用户;

            


 

系统中设计步骤:

     (1) 实体中添加代码:

     按照上面例子,三个实体User,Role和Department,于实体中添加代码:

 


                    



 

 

(2)Hibernate映射中编辑:

     其实上面的所有实体和实体关系都可以用 Rose 或EA自动生成的:

     根据EA图看出实体之间关系,在Hibernate中怎么设计呢? Role,User,Department

步骤:

   第一步写注释;


   第二步代码模板;


   第三步填充代码;


模板如下:

                    

 


注意:多对一是,外键在多的一方

<!-- parent属性,本类与Department(上级)的多对一 -->
<!-- <many-to-one 
name="parent"自己属性名字    
class="Department"关联的类名    
column="parentId"关联的外键></many-to-one> --><many-to-one name="parent" class="Department" column="parentId"></many-to-one>

 

 外键总结:

    外键引用的那个列在主表中必须是主键列或者唯一列。
    (1)1
:n的肯定把外键建立在n的那张表上。


    (2)1:1,一般要看谁是主表,谁是附属表,外键当然建立在附属表中。


    (3)n:m的情况,需要建立一个关系表,两个原表和其关系分别是1:n,1:m

  

总结:

  

Hibernate中实体映射:

一,写注释

格式为:?属性,表达的是本对象于?的?关系

例如user实体中注释:“Department属性,本对象于Department的多对一”

 


二,考模板:

           

 

三,填空:

Name属性:属性名(注释中的第一问号)


Class属性:关联实体属性类型,(注释中的第二个问号)


Column属性:

   (1)<many-to-one column=”..”>:一般可以写成属性名加Id后缀,如属性为department,则column值写成:departmentId


    (2)一对多中的<keycolumn=”..”>:从关联的对方(对方多对一)映射中把column值拷贝过来。


   (3)多对多中<keycolumn=”..”>:一般可以写成本对象的名加Id后缀,如本对象名为User,则写为userId


   (4)多对多中的<many-to-manycolumn=”..”>:一般可以谢伟关联对象的名称加Id后缀。

 



这篇关于Hibernate 之实体表关系设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112895

相关文章

基于C++的UDP网络通信系统设计与实现详解

《基于C++的UDP网络通信系统设计与实现详解》在网络编程领域,UDP作为一种无连接的传输层协议,以其高效、低延迟的特性在实时性要求高的应用场景中占据重要地位,下面我们就来看看如何从零开始构建一个完整... 目录前言一、UDP服务器UdpServer.hpp1.1 基本框架设计1.2 初始化函数Init详解

Springboot3统一返回类设计全过程(从问题到实现)

《Springboot3统一返回类设计全过程(从问题到实现)》文章介绍了如何在SpringBoot3中设计一个统一返回类,以实现前后端接口返回格式的一致性,该类包含状态码、描述信息、业务数据和时间戳,... 目录Spring Boot 3 统一返回类设计:从问题到实现一、核心需求:统一返回类要解决什么问题?

Java中自旋锁与CAS机制的深层关系与区别

《Java中自旋锁与CAS机制的深层关系与区别》CAS算法即比较并替换,是一种实现并发编程时常用到的算法,Java并发包中的很多类都使用了CAS算法,:本文主要介绍Java中自旋锁与CAS机制深层... 目录1. 引言2. 比较并交换 (Compare-and-Swap, CAS) 核心原理2.1 CAS

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI