hibernate中的多对一关联关系

Hibernate 单向多对一、单向一对多、双向一对多关联关系详解 一对多关系是最普遍的映射关系。比如部门和职工 一对多:从部门的角度,一个部门对应多个职工 多对一:从职工的角度,多个职工对应一个部门 数据库表中结构: 表 department:did departname 表 Employee:eid   ename   esex   did 工具类:SessionFactoryUtils .java,用来创建session工厂,后面的测试类的代码中 阅读详情

      前面已经说过hibernate可以用处理阻抗不匹配的问题,按照这个说法,数据库里面的关联关系在hibernate中也可以体现出来,常用的关联关系有“多对一”,“一对多”,“一对一”,“多对多”,多对一关系在应用中还是比较多的。这篇文章主要介绍多对一关系的使用。hibernate的开发环境在我的文章中已经讲过了,这里就不细说了。多对一一般用来描述的是外键关系。例如许多文章对应一个作者,许多员工属于某个部门。基于这样的关系,我们会在从表里设一个外键来表示他们的关系。这就是我们所说的“多对一”。下面就来写一个文章和作者的例子演示一下。

1.写2个vo类,代码如下

package org.lxh.vo;

public class Author {
	private int id;
	private String name;
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
}

package org.lxh.vo;

public class Article {
	private int id;
	private String name;
	private Author author;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Author getAuthor() {
		return author;
	}

	public void setAuthor(Author author) {
		this.author = author;
	}

}


 

2.编写hibernate的隐射文件,代码如下

 

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.test.annotations">

    <class name="org.lxh.vo.Author" table="author">

        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="name" column="name"/>
       
    </class> 

</hibernate-mapping>


 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.test.annotations">

    <class name="org.lxh.vo.Article" table="article">

        <id name="id" column="id">
            <generator class="increment"/>
        </id>

        <property name="name" column="name"/>
        <many-to-one name="author" column="author_id"/>  <!-- 这里的author就是Article里的那个 -->
    </class> 

</hibernate-mapping>


 

3.配置文件写好了,现在来做个单元测试。代码如下

package org.lxh.test;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.BeforeClass;
import org.lxh.vo.Article;
import org.lxh.vo.Author;

import util.HibernateUtil;

public class Test {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
    @org.junit.Test public void save(){
    	Session ses=null;
    	
    	Transaction tr=null;
    	try{
    		ses=HibernateUtil.getSession();
    		tr=ses.beginTransaction();
    		Author author=new Author();
    		author.setName("chenwill4");
    		Article article=new Article();
    		article.setAuthor(author);  //建立2个对象的关联
    		article.setName("老鹰抓小鸡3");
    		ses.save(author);  //将author信息保存
    		ses.save(article);
    		tr.commit();      //将事务提交,否侧数据不会被保存
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		if(ses!=null){
    			ses.close();  //关闭连接,否则会把数据库卡死
    		}
    	}
    	
    }
    @org.junit.Test public void queryByAuthor(){
    	Session ses=null;
    	
    	Transaction tr=null;
    	try{
    		ses=HibernateUtil.getSession();
    		tr=ses.beginTransaction();
    		Article art=(Article)ses.get(Article.class, 3);
    		
    		
    		System.out.println("作者的姓名是:"+art.getAuthor().getName());  //通过文章查询作者
    		
    		
    		tr.commit();      //将事务提交
    	}catch(Exception e){
    		e.printStackTrace();
    	}finally{
    		if(ses!=null){
    			ses.close();  //关闭连接,否则会把数据库卡死
    		}
    	}
    	
    }
}









        
《Hibernate学习笔记九》:多对一和一对多的关联关系 《Hibernate学习笔记九》:多对一和一对多的单向关联关系前面介绍了一对一的关联关系在Hibernate应该如何来实现,这篇博文就来介绍下多对一和一对多的关联关系。多对一和一对多的关联关系在我们的生活中也比较常见,例如,在我们学生时代,一个班级可以有多个学生,而一个学生只能属于一个班级,这就是一个多对一(一对多)的例子;还有在我们的工作中,一个工作小组可以有多个用户,而一个用户只能属于一个小组, 阅读详情

相关推荐

基于PCA的故障诊断方法(matlab)

1. PCA原理分析 PCA的原理主要是将原始数据进行降维。其具体工作原理参照:CodingLabs - PCA的数学原理 2. 数据预处理 训练数据集(只有正样本)为维数据,即有n个采样值,每个采样值有m个特征。 2.1 数据归一化 将数据X针对每个特征归一化为均值为0,均方根为1的数据。 其中: 3. PCA降维 3.1 首先求取协方差矩阵 协方差矩阵的公式为: 计算出来的协方差矩阵为特征m*m维矩阵。 3.2 求取特征值和特征向量 求取协方差矩阵R的特征值.

tangxianyu的博客 1万+

hibernate多对一关联和一对多关联

1. 多对一的单向关联 从订单(order)到客户(customer)的单向关联 (多个订单对应一个客户) JavaBean: Customer public class Customer{ private Integer id; private String name; } JavaBean: Order public class Customer{ private Integ

技术人生 2806

从Delta Delay到Timing Window:详解数字芯片后端时序差异的那些坑

本文深入剖析了数字芯片后端设计中,模块级与系统级时序分析结果不一致的核心原因。重点解释了Delta Delay如何导致模块级分析的乐观假设,以及Timing Window(时序窗口)差异如何通过影响串扰噪声计算,在顶层集成时引发新的时序违例,尤其是保持时间问题。文章为工程师提供了从约束建模到签核策略的系统性应对方案。

beer8的博客 498

Hibernate入门基础-单向多对一关联

1.单向多对一(例子:员工Employee  部门Department):多个员工对应一个部门单向多对一:单向 n-1关联只需从n的一端可以访问1的一端从Employee到Department的多对一单向关联 需要在Employee类中定义一个Department属性,而Department类无需定义存放Epmloyee对象的集合属性。(多方 管理一方  要知道一方的信息  有个属性能让多方得到一...

qq_41122556的博客 2258

告别RXTX:SpringBoot集成jSerialComm实现更现代的串口通信(附完整代码对比)

本文详细介绍了如何从传统的RXTX库迁移到jSerialComm,实现SpringBoot项目中更现代的串口通信。通过对比两种技术的依赖配置、API设计和跨平台支持,展示了jSerialComm在简化部署、提升性能和增强稳定性方面的优势,并提供了完整的代码示例和实战经验。

weixin_42522964的博客 284

手把手教你用srec_cat生成带CRC校验的STM32固件(解决OTA常见校验失败问题)

本文针对STM32 OTA升级中常见的固件校验失败问题,提供了一套使用srec_cat工具自动生成带CRC32校验固件的实战解决方案。文章详细拆解了命令参数,指导开发者如何为固件嵌入CRC值、处理地址偏移及合并文件,从而确保Bootloader能可靠校验固件完整性,提升远程更新的稳定性。

kappa的博客 783

Hibernate中用注解配置一对多双向关联和多对一单向关联

Hibernate提供了Hibernate Annotations扩展包,使用注解完成映射。在Hibernate3.3之前,需单独下载注解开发包 配置持久化类配置关联关系 下面我们先从多对一单向关联关系讲起,多对一单向关联就是在多的一方植入一的一方的主键作为外键,下面我们先进行初始配置, 在配置的过程中我们会遇到一个问题  就是无论用load还是get都不会出现延迟加载,那么我们应该如何设置为要延...

weixin_42124622的博客 712

模拟量传输4-20ma电流

大家可能会非常熟悉RS232,RS485,CAN等工业上常用的总线,他们都是传输数字信号的方式。那么,我们用什么方式来传输模拟信号呢?工业上普遍需要测量各类非电物理量,例如温度、压力、速度、角度等,这些都需要转换成模拟量电信号才能传输到几百米外的控制室或显示设备上。工业上最广泛采用的是用4~20mA电流来传输模拟量。 采用电流信号的原因是不容易受干扰,因为工业现场的噪声电压的幅度可能达到数V,但是噪声的功率很弱,所以噪声电流通常小于nA级别,因此给4-20mA传输带来的误差非常小;电流源内阻趋于无穷.

tangdongming的博客 1万+

hibernate 多对一关联

many-to-one 不带cascade   想要级联 需要手动在该标签中加入 cascade="save-update" 双向关联 要求column 的值一样 否则会在多的一方生成两个外键 session.beginTransaction(); Classes clas = (Classes)session.load(Classes.class,1); Sy

a907607222的专栏 394

【CANoe示例分析】SOMEIPWithvCDL_16

本示例来源于官方提供的示例工程:0004_基于vCDL实现SOMEIP通信_Demo\0004_基于vCDL实现SOMEIP通信_Demo\SOMEIPWithvCDL。

jasonj333 567

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

强化学习从基础到进阶-案例与实践[4]:深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

丨汀、的博客 2065

Hibernate 超简单的一对多和多对一查询

这里使用的Teacher类和Student类(假设一个Teacher对应多个学生,一个学生对应一个老师)所需jar包开始建表1(表名 teacher)2(表名 student)主键都为自增长创建实体类Teacher类package com.bright.po; import java.util.Set; public class Teacher { private Integer id; ...

kd_bright的博客 1万+

某招标公告网和vcaptcha验证码识别逆向

本文分析了某验证码系统的加密流程及破解思路。首先通过反混淆技术定位到加密函数,拆解了包含指纹函数、环境参数等组成的加密字符串。研究发现验证码生成涉及canvas指纹、环境检测等反爬机制,可通过模拟浏览器环境绕过。验证过程需要解密图片顺序,通过work2.js计算还原图片位置,再结合滑动轨迹、时间等参数生成验证请求。文章仅提供技术研究思路,强调需遵守法律法规,严禁非法破解信息系统。完整流程包括环境模拟、加密参数还原、图片处理和轨迹生成等步骤,成功率较高。

码王吴彦祖的博客 577

Hibernate多对一及一对多关联关系理解及区别

Hibernate多对一及一对多关联关系理解及区别 关联关系的本质是将关联关系映射到数据库中。关联关系在对象模型中体现为内存中的一个或多个引用。  一对多关系: 一对多关系 分为“单向一对多/多对一关系”和“双向多对一”关系。     • “单向一对多/多对一关系”只需在“一”/“多”方进行配置,     • “双向多对一关系”需要在关联双方均加以配置。

用文章记录成长 974

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Hibernate关联关系之多对一

本文以组和用户为例,讲述hibernate中多对一关联关系的映射原理以及应用。1.原理在对象模型中,关联关系是有方向的。多对一顾名思义,维护关系的是多的一方。也就是本例中的用户的一方。此处我们只说单向关联。原理图如下: 对象模型上可以看出,由多的一方也就是User的一方来维护关系,而此时,对于Group对象来说,根本不知道User对象的存在;从关系模型上可以看出,在多的一方也就是user表中,

maodou95838的专栏 393

Hibernate一对多,多对一,多对多的关联关系

一对多,多对一,多对多的关联关系

qq_55518624的博客 407

Hibernate学习笔记7--关联关系之多对一

关系映射 .多对一(Employee-Department) 1.建表示在员工表中添加一个外键 表示Employee-Department之间的多对一的关系,可以在Employee中建一个departid字段。 缺点:想知道部门信息还得现查一遍 解决:是在Employee类中建一个Department类型的成员变量,这才体现出面向对象的感觉 分析:hibernate不是单纯的把co

韬晦潜胖蛇的专栏 2100

Hibernate - 单向多对一关联关系映射

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

小小默:进无止境 979

hibernate 关联关系配置(一对多,多对一)

Hibernate 关联关系:        1. 什么是关联(association)            1.1 关联指的是类之间的引用关系。如果类A与类B关联,那么被引用的类B将被定义为类A的属性。例如:类A里面 关联 类B     public class A{         private B b = new B;//设置类B为类A的属性         public A(...

Giraffe_it的博客 372

hibernate映射总结详解: 映射多对一单向关联关系

  Hibernate解决实体类型映射和值类型映射的方法是Hibernate的精华之一。Hibernate实体和值类型映射大致分为四种情况:◆       映射实体关联关系■     一对多关联关系◆        多对一单向关联 (Ⅰ)◆      一对多双向关联 (Ⅱ)◆       一对多双向自身关联 (Ⅲ)■     一对一关联关系◆        按主

读书笔记 1991

hibernate关联关系(一对多、多对一)

1.什么是关联关系? 关联关系是指两个实体或者表有相互关联,比如在学生表中,学生表有班级id,那么学生表中的班级id就关联班级表中班级Id字段。因此关联关系,可以看成是一种外键关系。 2.为什么要有关联关系? 为了实现级联操作,删除班级中某个学生,会连带删除学生表中的学生,以便维护表数据的一致性。 3.hibernate中实现关联关系  3.1单向一对多关系 package com....

Japathy 621

Hibernate关于一对多 多对一 多对多关联关系的设置

写这篇文章主要是介绍一下hibernate关于一对多 多对一 多对多关联关系的设置。 看似三个问题解决起来实则是2个问题,因为多对一和一对多的处理是反向的。 下面我们先从一对多入手,对于一对多我们从两个方面讲解: 1)一对多单向关联关系 2)一对多双向关联关系 我们使用User和OrderItem来描述,一个user可以拥有多个订单,一个订单只能属于一个user 在调试这段代码的时候闹

c1523456的博客 1648

hibernate关联关系-多对一

多对一关联关系:   模型:员工Employee — 部门Department   package Domain; public class Employee { public int getId() { return id; } public void setId(int id) { this.id = id; } public String ...

张 作强 BLOG 115

Hibernate关联关系总结一对多、多对一单向关联

案例:一对多和多对一是相互的,如班级和学生,班级为一方,学生为多方,以班级为主“一对多”,以学生为主“多对一”,当然也可以是双项的。 一对多单向关联          一对多的单向关联,以一方为主进行配置,多方则不需要配置,即在一方配置多方,因为多方可能有多个数据,所以不能用

大宝剑 991

精通Hibernate类与类关联关系:[一]建立多对一的单向关联关系

在域模型中,类和类之间最普通的关系就是关联关系。在UML语言中,关联是有方向的。以客户(Customer)和订单(Order)的关系为例,一个客户可以发出多个订单,而一个订单只能属于一个客户。 从Order到Customer的关联是多对一关联,这意味着每个Order对象都会引用一个Customer对象,因此在Order类中应该定义一个Customer类型的属性,来引...

weixin_30815469的博客 74
上一篇: ssh整合出错经典
下一篇: hibernate中的一对多关联关系
青蛙小王子
博客等级 码龄16年 239粉丝 311原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值