Hibernate中一对多的映射关系实例

基于JSP+Servlet校园二手交易平台 源码下载 http://www.byamd.xyz/hui-zong-1/ 基于JSP/Servlet校园二手交易平台 摘 要 本系统采用JSP/servlet技术,是使用Java编程语言编写的一套校园网二手交易平台软件。系统采用的是最近几年流行的B/S开发模式,以互联网方式运行,服务器端只需要安装本系统,而客户端用户只要可以上网,就可以非常方便快捷的通过浏览器访问系统,浏览和发布二手交易信息,免去了传统的C/S模式下复杂的安装、配置、维护等操作。同时由于使用面向对象的Java语言,所以本系统也具有J 阅读详情
以下是用Hibernate做Blog中数据表用户表和文章表之间的映射关系

  在写用户表和文章表映射关系之前一定要清楚的知道用户表里的属性都有哪些,在写完POJO类之后就可以写表之间一对多的关系了。
 
用户表的POJO类(User.java)
package cn.com.blog.model;
import java.util.HashSet;
import java.util.Set;
public class User {
     private   String   id;
     private      String      name;
     private      String      password;
     private      Set      messages = new HashSet();

     public String getId(){
           return id;
     }
     public void setId(String id){
           this.id = id;
     }
     public Set getMessages() {
           return messages;
     }
     public void setMessages(Set messages) {
           this.messages = messages;
     }
     public String getName() {
           return name;
     }
     public void setName(String name) {
           this.name = name;
     }
     public String getPassword() {
           return password;
     }
     public void setPassword(String password) {
           this.password = password;
     }
}
文章表的POJO类(Message.java)
package cn.com.blog.model;
import java.sql.Timestamp;
import java.util.Set;
public class Message extends BaseModel {
     private   String   id;
     private      String      title;
     private      String      content;
     private      User      user;
     private      Timestamp pubdate;
     
     public String getId(){
           return id;
     }
     public void setId(String id){
           this.id = id;
     }
     public String getContent()
     {
           return content;
     }
     public void setContent(String content)
     {
           this.content = content;
     }
     public String getTitle()
     {
           return title;
     }
     public void setTitle(String title)
     {
           this.title = title;
     }
     public User getUser()
     {
           return user;
     }
     public void setUser(User user)
     {
           this.user = user;
     }
     public Timestamp getPubdate() {
           return pubdate;
     }
     public void setPubdate(Timestamp pubdate) {
           this.pubdate = pubdate;
     }
}
下面是用户表和文章表之间的映射关系
注意:这里的用户表和文章表的映射文件的名子一定要与POJO类的名子相对应,否则建立的关系就存
  在了。
用户表的映射文件(User.hbm.xml)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "[url]http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd[/url]">
<hibernate-mapping package="cn.com.blog.model">

     <class name="User" table="USER">
     
           <id name="id" column="ID" type="string">
                <generator class="uuid.hex"/>
           </id>
           <property name="name" column="NAME"/>
           <property name="password" column="PASSWORD" />
           <set name="messages" inverse="false" cascade="all">
              <!--key元素用于指定关联的字段 -->
                <key column="USER_ID"/>
                <!-- 一个用户对应多篇文章 -->
                <one-to-many class="Message"/>  
           </set>
     </class>
</hibernate-mapping>
文章表的映射文件(Message.hbm.xml)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "[url]http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd[/url]">
<hibernate-mapping package="cn.com.blog.model">

     <class name="Message" table="MESSAGE">
     
           <id name="id" column="ID" type="string">
                  <generator class="uuid.hex"/>
           </id>
           <property name="title" column="TITLE"/>
           <property name="content" column="CONTENT" />
           <property name="pubdate" column="PUBDATE" />
              <!-- 多篇文章对应一个用户 -->
           <many-to-one name="user"   column="USER_ID"/>
      </class>
</hibernate-mapping>

  在这些POJO类和映射文件都写好之后,通过写一个测试的主方法,完成一下向数据库里添加一下数据,如果添加进去,说明这项工作基本完成。这些是我在学习Hibernate中理解比较清楚的一部分内容,在这里和大家一起分享一下,希望大家多提宝贵意见。
SCRFD算法解读及环境安装实践 SCRFD检测算法及环境安装 阅读详情

相关推荐

若依开源框架(分离版)在人大金仓数据库下使用

对于甲方业务特殊要求,使用国产化数据库人大金仓,作为项目主要存储。这里以若依开源框架整合人大金仓为例,演示如何在真实项目中引入人大金仓。

🐱喵测实验室 5943

Hibernate的映射关系与级联(一对一、一对多、多对多)

Hibernate的映射关系与级联(一对一、一对多、多对多) 长期专业踩坑,现记录点滴,望提升自我,为祖国软件事业作贡献(害羞脸) 1、主键一对多示例 2、非主键一对多示例 3、主键多对多示例 4、非主键多对多示例 5、主键一对一示例 6、非主键一对一示例 7、双向示例 8、单向示例

iamzhuwh 1548

UltraScale+ FPGA中GTY收发器参考时钟的跨Bank共享机制解析

本文深入解析了UltraScale+ FPGA中GTY收发器参考时钟的跨Bank共享机制,详细介绍了时钟布线架构、SLR区域限制及Vivado工程配置要点。通过实际案例和优化建议,帮助工程师解决高速串行通信中的时钟共享问题,提升系统性能。

weixin_29280219的博客 632

Hibernate关联映射

Hibernate中有一对一,一对多,多对一,一对多(双向),多对多集中关联映射。 其中一对多,多对一,一对多(双向)用的比较多。因为一对一太过简单可不用,多对多可以转换为一对多或多对一。 一对一(单向的主键关联映射) 在实际生活中的例子有:身份证对应人 在主表的映射文件中不需配置特殊的标签, 在子表的映射文件就要将主键的生成策略设置为foreign并在其中设置参数(param)...

qq2964047的博客 147

FAST-LIO 实战:从 LI-Init 标定到 YAML 配置全解析

本文详细解析了FAST-LIO算法中LI-Init标定的关键步骤与YAML配置优化技巧。从激光雷达与IMU的时空标定原理到实战参数调优,提供了一套完整的解决方案,帮助开发者解决点云畸变、建图漂移等常见问题,提升SLAM系统在动态环境中的稳定性和精度。

weixin_42651281的博客 330

具身智能:原理、算法与系统 第16章 运动控制基础

实时迭代(Real-Time Iteration, RTI)策略在每个采样时刻执行有限次迭代(通常一次),利用相邻时刻解的连续性,在严格时间限制内获得可行解。比例-积分-微分(Proportional-Integral-Derivative, PID)控制是工业界最广泛应用的控制策略,其原理基于误差的当前值(比例)、累积值(积分)与变化率(微分)的线性组合。力-位置混合控制(Hybrid Force/Position Control)将任务空间分解为力控制子空间与位置控制子空间,分别控制。

VectorShift的博客 146

Hibernate笔记(三) 表与表的关系分析、一对多、多对多、

表的关系分析 Hibernate框架实现了ORM的思想,将关系数据库中表的数据映射成对象,使开发人员把对数 据库的操作转化为对对象的操作,Hibernate的关联关系映射主要包括多表的映射配置、数据的增加、 删除等。 数据库中多表之间存在着三种关系,也就是系统设计中的三种实体关系。如图所示。 系统设计实体类的三种关系:一对多,多对多,一对一,在数据库中实体表之间的映射是通过外键来映射的 表与表之间的关系 【一对多】 建表原则,多的一边创建外键指向一的一方的主键 【多对多】 建表原则:创建一个中间表,中间表

codinglover5的博客 370

想使用dify实现docx文档的自动生成?试了一圈,感觉还是根据python-docx更靠谱

在软件开发过程中,需求文档、设计文档等材料的编写是每个开发者都绕不开的工作。最近笔者接到一个需要批量生成标准化需求文档的任务,尝试了目前热门的低代码工具Dify后,发现对于稍微复杂格式的文档生成需求(例如文本居中这么简单的需求),最终还是回归到基于python-docx库的解决方案。本文将分享两种技术路线的对比实践。

xiezhipu的博客 2549

一口一口吃掉Hibernate(五)——一对多单向关联映射

在上一篇博客《一口一口吃掉Hibernate(四)——多对一单向关联映射》中,介绍了多对一的关联映射,今天就反过来说一下一对多的单向关联映射。       可能有人会对这2篇博客的题目有点混淆不清,跟日常说的关系有点不同。我们日常说的比如父子关系,夫妻关系都是说的双向关系,而现在讨论的则是单向关系,所以也就有了多对一和一对多的说法。       二者的关系其实很简单,只是角度不

崔成龙 . 勇往直前 6027

代码复现1——Matterport3d数据集下载

进入“Dataset Download”部分,下载申请书,填写之后发送到指定邮箱(matterport3d@googlegroups.com),之后会收到回信,回信中附有一个download_mp.py的脚本文件。,大小约15G,并不是所有的Mp3d datasets,所有大小约1.3T。下载完成后如下图所示:我这边显示大小为16.1G。

qq_44100524的博客 8056

PIMPL 模式 以及Q_DECLARE_PUBLIC 与 Q_DECLARE_PRIVATE

在 C++ 中,PIMPL 模式通常通过将类的私有数据和实现放在一个单独的类中,然后在类的公共接口中使用指向该私有实现类的指针来实现。宏可以帮助在 Qt 的 PIMPL 模式中实现类的私有实现和公共接口的分离,提高代码的封装性和可维护性。宏的结合使用,我们可以实现类的私有性和封装,避免暴露私有实现的细节,同时提高类的可维护性和灵活性。:这一行声明了一个友元类,使得类的公共接口可以访问私有实现类的私有成员。:这一行声明了一个友元类,使得类的私有实现可以访问类的私有成员。是两个宏,用于实现 PIMPL 模式。

追赶时代的博客 854

hibernate几种映射关系的笔记

最近很少写博客,主要是工作的各种变动,也有一个原因是将学习重心从android暂时转移到后台,花了几个月的时间来学习了Spring、SpringMVC、Hibernate。个人觉得其中最难学的应该是hibernate,其中一个大难点就是各种映射关系的处理,这里我自己给自己整理了一下思路,主要是通过《疯狂java ee 企业应用实战》里面的hibernate章节自学整理出来的心得。我觉得需要学好hib

selfreeyuan的博客 720

RK3588 MPP,RGA,DRM,QT之RGA

RK3588多路视频采用RGA来进行混合成一帧

dreamliweiming的博客 4266

hibernate 映射关系

  hibernate 映射关系 引用参考:http://www.pianshen.com/article/9464106443/

zm的博客 173

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

lwip-2.0.3

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

Hibernate映射解析——七种映射关系

【转载】自信息技术提高班——黄爱岗

woyizhidouzai0505的专栏 521

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Hibernate学习笔记 | 详解映射关系(一对一、一对多、多对多、继承关系)

映射一对多关联关系 在领域模型中,类与类之间最普遍的关系就是关联关系。 在UML中,关联是有方向的。 以Customer和Order为例:一个用户能发出多个订单,而一个订单只能属于一个客户,从Order到Customer的关联是多对一的关联,而从Customer到Order是一对多的关联。 单向n-1 单向n-1关联只需从n端可以访问1端。 域模型:...

小白菜的博客 1113

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hibernate 七种映射关系

首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。 Hibernate在实现ORM功能的...

weixin_30567471的博客 80

Hibernate映射关系全面解析

Hibernate映射关系全面解析,到今天为止,对Hibernate映射的郁闷已经无法再抑制了,也必须该和这个烦人的家伙做个了断了,下面将对Hibernate各种映射做一一细解。 [size=medium][b]Hibernate映射关系到底有多复杂?[/b][/size] 传说中的不就是分为3种嘛,一对多,一对一,多对多,如果你真正用过hibernate你会发现实际的开发过程中遇...

131

在Hibernate中实现复杂的数据映射

<br />2003 年 10 月 13 日在前一篇文章《使用Hibernate来操作持久对象》中,介绍了Hibernate的基本概念,然后用实例演示了怎么在Web应用中使用Hibernate来封装持久数据对象。然而在现实的项目中,我们往往需要操作多个数据表,并且多个表之间往往存在复杂的关系,在本文,将介绍怎么在Hibernate中描述多个表的映射关系,并且演示怎么操作关系复杂的持久对象。<br />阅读本文前您需要以下的知识和工具:Tomcat 5.09,可以从 http://www.apache.org

yangguobinli515的专栏 280

Hibernate 一对一,一对多关系

1. Hibernate Annotation关系映射有下面几种类型: 1)一对一外键关联映射(单向) 2)一对一外键关联映射(双向) 3)一对一主键关联映射(不重要)在这不演示 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据

chao331303的专栏 813

hibernate关联映射注解

转自:hibernate annotation注解方式来处理映射关系 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hiber...

weixin_33859231的博客 81

hibernate annotation注解方式来处理映射关系

hibernate annotation注解方式来处理映射关系 在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在

miao1726584751的专栏 796

在 Hibernate 中实现复杂的数据映射(转载)

[size=x-large][color=brown]级别: 初级 陈亚强 (cyqcims@mail.tsinghua.edu.cn), 高级软件工程师 2003 年 10 月 13 日 在前一篇文章《使用Hibernate来操作持久对象》中,介绍了Hibernate的基本概念,然后用实例演示了怎么在Web应用中使用 Hibernate来封装持久数据对象。然而在现实的项...

hn_liuyi 148

学习hibernate笔记

来吧,让我们使用记事本来开发hibernate...使用久了卡巴斯基的myeclipse,还是来个记事本爽一把先...

骆宏的专栏 1531

Hibernate映射解析——七种映射关系 目前看到的最详细的,转载下,后面可能会添加一些

首先我们了解一个名词ORM,全称是(Object Relational Mapping),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。                Hibernate在实现ORM功

lee的专栏 3524

学习脚步----hibernate编程中的映射关系简单片面分析一下(自己学习)

[color=green][size=large][b]注:在hibernate编程中的映射关系中用的最多的就是一对多多对一,下面通过一个小案例分析(cascade的使用和效果)来对最简单的进行阐述:(个人学习笔记)[/b][/size][/color][size=large][size=x-small][b][color=darkred]三个类: Cateory : package enti...

Aubergine_kang的专栏 142
上一篇: 內连接
下一篇: Hibernate多表映射关系
AngleKill
博客等级 码龄18年 20粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值