Hibernate实体关系映射——单边的多对一关系

掌握Java中Hibernate的实体关系映射 本文旨在帮助Java开发者深入理解Hibernate框架中的实体关系映射技术,掌握各种关系类型的配置方法,并能够在实际项目中正确应用这些技术。介绍Hibernate和ORM的基本概念详细讲解各种实体关系映射类型提供实际代码示例和解释讨论高级特性和最佳实践总结关键知识点并提供思考题ORM:对象关系映射(Object-Relational Mapping),一种将对象模型与关系数据库映射的技术实体(Entity):代表数据库表的Java类映射(Mapping) 阅读详情

单边的多对一关系


   单边的多对一关系与单边的一对多关系刚好相反,多方有一方的引用,一方没有多方的引用,但是他们的数据表间的关系是一样的。例如:论文与论文类别;


具体实现如下:

 

  Type实体类的java注解配置比较简单。由于没有Article引用,Type就是最普通的POJO实体,主键为id属性,只有一个String类型的普通属性name。注意:name被配置为unique的,利用数据库提供的unique约束保证数据库中不会有重复的数据。

 

Type.java

 

[html]  view plain  copy
  1. package com.lmb.hibernate.bean;  
  2.   
  3. import javax.persistence.*;  
  4.   
  5. @Entity  
  6. @Table(name="tb_type")  
  7. public class Type {  
  8.  @Id  
  9.  @GeneratedValue(strategy = GenerationType.AUTO)  
  10.  private Integer id;  
  11.    
  12.  @Column(unique = true)  
  13.  private String name;  
  14.   
  15.  public Integer getId() {  
  16.   return id;  
  17.  }  
  18.  public void setId(Integer id) {  
  19.   this.id = id;  
  20.  }  
  21.  public String getName() {  
  22.   return name;  
  23.  }  
  24.  public void setName(String name) {  
  25.   this.name = name;  
  26.  }  
  27. }  


 

      Article属性中有一个Type类型的属性。该属性将配置为ManyToOne的。Article中配置了级联操作PERSIST,如果Type对象没有被持久化,则持久化Article对象是会一并持久化Type对象。由于content字段内容可能比较长,因此配置content列的数据库类型为text。如果要存储更多的内容,可配置为longtext。

 


Article.java

 

[html]  view plain  copy
  1. package com.lmb.hibernate.bean;  
  2.   
  3. import javax.persistence.*;  
  4.   
  5. @Entity  
  6. @Table(name="tb_article")  
  7. public class Article {  
  8.  @Id  
  9.  @GeneratedValue(strategy = GenerationType.AUTO)  
  10.  private Integer id;  
  11.    
  12.  private String name;  
  13.    
  14.  @Column(columnDefinition = "text")  
  15.  private String content;  
  16.   
  17.  @ManyToOne(  
  18.   cascade = {  
  19.    CascadeType.PERSIST  
  20.   },  
  21.   fetch = FetchType.EAGER  
  22.  )  
  23.  @JoinColumn(name = "type_id")  
  24.  private Type type;  
  25.    
  26.  //getters and setters  
  27.  public Integer getId() {  
  28.   return id;  
  29.  }  
  30.  public void setId(Integer id) {  
  31.   this.id = id;  
  32.  }  
  33.  public String getName() {  
  34.   return name;  
  35.  }  
  36.  public void setName(String name) {  
  37.   this.name = name;  
  38.  }  
  39.  public String getContent() {  
  40.   return content;  
  41.  }  
  42.  public void setContent(String content) {  
  43.   this.content = content;  
  44.  }  
  45.  public Type getType() {  
  46.   return type;  
  47.  }  
  48.  public void setType(Type type) {  
  49.   this.type = type;  
  50.  }  
  51. }  

 

 

   将两个实体配置到hibernate配置文件中。

 


hibernate.cfg.xml

 

[html]  view plain  copy
  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC  
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.           "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  
  5. <!-- Generated by MyEclipse Hibernate Tools.                   -->  
  6. <hibernate-configuration>  
  7.   
  8.     <session-factory>  
  9.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  10.         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?characterEncoding=UTF-8</property>  
  11.         <property name="connection.username">lmb</property>  
  12.         <property name="connection.password">lmb</property>  
  13.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  14.         <mapping class="com.lmb.hibernate.bean.Person" />  
  15.         <mapping class="com.lmb.hibernate.bean.Email" />  
  16.           
  17.         <mapping class="com.lmb.hibernate.bean.Type" />  
  18.         <mapping class="com.lmb.hibernate.bean.Article" />  
  19.       
  20.     </session-factory>  
  21.   
  22. </hibernate-configuration>  


 

测试方法:

 

   先实例化一个Type对象,一个Article对象,并设置批次的依赖关系。然后通过HibernateSessionFactory打开一个session会话,开启Transaction事务,然后保存Article对象。由于Article中设置了级联保存,保存Article时hibernate将自动级联保存Type对象。然后查询所有的Article并输出。查看结果。

生成式引擎优化(GEO)标准化操作流程:构建高效AI生成系统的全链路指南 GEO是针对生成式AI的内容优化策略,通过提升内容在AI生成答案中的引用优先级实现品牌传播。相比传统SEO,GEO使内容直接嵌入AI答案,无需用户点击链接。核心流程包括:1)逆向拆解AI问答场景,结构化知识资产;2)生产权威内容(白皮书、专利数据)和算法适配内容(PCOE模板);3)技术实现(数据投喂、模型微调);4)331渠道分发策略;5)效果监控与动态防御。需注意采用结构化数据标记、主动提交训练数据,并避免简单复制SEO策略。2025版强调内容权威性和语义优化,通过AI原生内容工程实现高效曝光。 阅读详情

相关推荐

小米汽车技术路线

从小米的电子电器架构来看,行业内EEA已经由域集中逐渐过度到域融合+区域控制的架构并向着中央计算+区域控制的方向发展。 而小米汽车智驾算法也从基于高精地图模块化架构,到去高精地图模块化架构,再到端到端架构,这也正是行业对于智驾算法演进的共识。

HITbingdu的博客 3783

java一对多单向关联

多的一方加外键 package hibernate002test.copy; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; ...

zhang1996922的博客 897

手把手教你用Simulink搭建PMSM FOC控制模型(附完整仿真文件下载)

本文手把手教你使用Simulink搭建完整的永磁同步电机(PMSM)磁场定向控制(FOC)仿真模型。内容涵盖从电机与逆变器建模、核心的坐标变换(Clark/Park变换)实现、电流环与速度环PID整定,到SVPWM调制与系统集成调试的全过程,并提供关键参数设置与实用调试技巧,帮助工程师快速掌握FOC的工程实现。

silver的专栏 861

hibernate多对一的配置manytoone

1.老套路先导包在说 我这的包是导的路径包,也可以把包放在项目里但项目多了会卡顿我就导的路径 2.建立实体类(客户)Customer和定单Order:定单有很多个而客户只有一个,也就是多个订单都是一个客户定的,所以形成多对一的关系 下面是建的custcmer.java类 public class Customer { private Integer cid; private Str...

胡杨树的守护者 1252

SAP SD信贷管理实战:从配置到风险控制的完整指南(附后台路径)

本文详细解析了SAP SD信贷管理的完整配置流程与风险控制策略,涵盖信贷控制范围设置、风险分级机制及动态控制配置。通过实战案例和后台路径指引,帮助企业实现从客户信用评估到实时监控的全流程管理,有效降低坏账风险并优化资金安全。

3a9bq4r8t2y的博客 212

【UE5】【蓝图】 LevelSequence 动画播放与暂停

最近有些工作,在研究UE5 蓝图的LevelSequence,来制作一些简单动画。做个笔记,记录一下动画更换绑定actor的操作,以及动画播放后如何暂停和继续。

UE5开发备忘录 1万+

框架漫谈之hibernate(四)hibernate一对多、多对多实体类xml配置

数据库建表SQL 客户联系人一对多 用户角色多对多

ZhuPengWei_ 1487

MTK平台高效部署Qwen2.5大模型:从转换到推理全流程解析

本文详细解析了在MTK平台上高效部署Qwen2.5大模型的全流程,涵盖从环境准备、模型转换与量化,到编译部署与上机推理。重点介绍了如何利用MTK GAI部署工具包进行模型转换和量化,以适配MTK硬件,并最终在设备上成功运行Qwen2.5模型,为边缘侧AI应用提供实践指南。

weixin_29041195的博客 503

hibernate基于实体类注解实现一对多的配置

一的一方:@Entity @Table(name = "user") public class User { private Long id; private String name; private String address; private Integer age; private Date createTime; private ...

weixin_38860401的博客 1931

2.设置Salesforce开发环境

Salesforce DX:salesforce Developer Experience (salesforce开发人员体验)LWC:Lightning Web Component(注意首字母是大写的,是一个概念,小写的话有组件本身的含义)CLI:Command Line Interface(命令行界面)version control system (VCS):版本控制系统。

nihaixiao的博客 2195

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1144

【Hibernate】Hibernate实体关系映射——单边的多对一关系

单边的多对一关系   单边的多对一关系与单边的一对多关系刚好相反,多方有一方的引用,一方没有多方的引用,但是他们的数据表间的关系是一样的。例如:论文与论文类别;具体实现如下:   Type实体类的java注解配置比较简单。由于没有Article引用,Type就是最普通的POJO实体,主键为id属性,只有一个String类型的普通属性name。注意:name被配置为unique的,利用数据库提供的...

lmb55的专栏 1563

uniapp [移动端H5网页] - 强力解决弹起软键盘后页面被挤压变形或页面整体上移问题,点击input输入框键盘弹出底部被上推往上顶遮挡及各种问题(兼容安卓苹果ios手机,微信公众号网页也适用)

uni-app,h5网页,input输入框组件,uniapp h5软键盘弹出,uni-app 输入框,键盘弹起时页面整体上移问题,uni,H5页面,解决软键盘弹起页面被挤压、被往顶的问题,解决uni-app 输入框,键盘弹起时页面整体上移问题,uniapp调用手机系统软键盘,页面窗口被顶起,布局定位失效,解决uniapp软键盘弹起导致页面fixed定位元素被顶上去,输入法软键盘弹起,窗口顶起,变形解决办法,UniApp中input组件在IOS设备上弹出软键盘时页面整体上移问题的解决方案,以及input组件聚

🏆 前端领域优质创作者 1万+

4、Hibernate 实体关系映射(二、单边多对一关系 注解、xml两种方式)

单边多对一与单边一对多关系相反,多的一方有一方的

lihaoju的专栏 785

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Hibernate实体关系映射—Annotation

hibernate实体关系映射分为: 单边一对一,双边一对一; 单边一对多,单边多对一; 双边一对多,双边多对一; 单边多对多,双边多对多; 以及主键相同的单双边一对一。下面分别总结这几种关系映射的注解方法: 1. 单边一对一和双边一对一 单边一对一:比如一个学生(Student)有一个学生证(Stu...

weixin_33790053的博客 71

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Hibernate之实体关系映射

延迟加载与即时加载 例如Person类和Email类是一对多关系,如果设为即时加载,当加载Person时,会自动加载Email,如果设置为延迟加载,当第一次调用person.getEmails()时才会执行SQL语句加载Email 注解配置时,@OnetToMany(Fetch = FetchType.EAGER)为即时加载,Fetch = FetchType.LAZY为延迟加载 ...

weixin_30262255的博客 267

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

轻松搞定hibernate映射实体关系

public class User { private Long id; //用户id private String loginName; // 登录名 private String password; // 密码 private String name; // 真实姓名 private String gender; // 性别 private String phoneNumber;

思想上移,行动下移 1220

Hibernate中 多对一,一对多映射关系分析详解

1 多对一   站在多的一方思考问题: 关联映射 分析 1表结构:唯一 1-N外键关联 外键设置在从表中 客户信息userinfo , 收件人recipieninfo  一个客户有多个收件人: 多的一方收件人拥有客户的id 2对象结构 public class Recipieninfo implements java.io.Ser

咖啡 2061

Hibernate映射—— 多对一单向关联映射

概念        基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用。 分类   关联关系分为上述七种,但是由于相互之间有各种关系,可以简化,例如:多对一与一对多映射,只是侧重的角度不对而已。 映射技巧        映射技巧是小编写映射文件的过程,总结的经典内容,总共分为四步,咋看

Snow丶的博客 445

【Hibernate】——多对一映射

什么是映射?            小编这里总结一年Hibernate的关联映射,这篇博文主要讲多对一的关联映射。            首先要知道什么是映射?简单的说,一个萝卜一个坑就是一种映射关系。数学上来说,y = ax^2 + bx + c,就 是x到y 的映射。            Hibernate的基本映射?            而hib

努力成为自己的榜样。 851

实体关系映射

 实体关系映射1、One to one:一对一主键关联两个表主键对应,插入一个表另一个表的主键相对应。(1).主表:.使用Hibernate插入主键uuid.hex.修改主表user.hbn.xmlone-to-one name="rose" class="db.Rose" cascade="all">one-to-one>Name:从表名Class:从表对

bddy_xing的专栏 624

Hibernate级联查询实体关系映射

Hibernate  实体关系映射 4.  使用 MyEclipse 的 的 反向 工程 向导 生成 关系 DB Browser 中的表中右击-->Hibernate reverse Engineering... 选择所选择表的主键生成方式,如图中进行配置,选择 native:

zhupengqq的博客 1273

mysql test 映射到实体_MyBatis实体关系映射

MyBatis既然是一个ORM框架,则它也有像Hibernate那样的一对多,多对多,多对一的实体关系映射功能。下面我们就来介绍一下如何使用MyBatis的实体关系映射1.MyBatis实体关系映射,对于我个人来讲常用的有下面两种多对一:在子表的映射文件中添加association一对多:在父表的映射文件中添加collection2.MyBatis中多对一的案例先创建两张表CREATE TABLE...

weixin_42298922的博客 166

Hibernate之多对一实体映像

多对一实体映像 一个实体简单的说就是在数据库中拥有一个表格的对象,并拥有自已的数据库识别(database identity),之前介绍的Component对象并不是实体,它没有自已的数据库识别,具体的话,它没有id属性,Hibernate并不会赋予它id值。  实体与实体之间的关系有:一对一、多对一、一对多、多对多。其中多对一算是最常见的实体关系,举个简单的例子,假设您在撰写一个宿舍管理系统,一

晨曦的专栏 1143

Hibernate 多对一关系

多对一(单向 和 双向) 案例:一个部门 有多个员工, 一个员工只属于一个部门 一、多对一单向 1)实体类 部门实体类(Department.java) package com.lcy.model; public class Department { private int id; private String name; public Department() { ...

踏 浪的博客 329

Hibernate HelloWorld-06 单向多对一的映射关系

一、单向多对一的映射关系 1、多个订单对应一个customer 2、customer : 1 3、order:多 4、方向:多个order对应一个customer 5、只需要在订单表里面引用客户id即可,而不是在客户订单里面引用oder集合,实际在表中的关系是:order表里面有一个外键,这个外键是customer表的customerid 二、项目文件

我自倾怀,君且随意 620
上一篇: Hibernate实体映射——单边的一对多关系
下一篇: Hibernate主键生成策略与配置详解
Heavy_Dream
博客等级 码龄10年 11粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值