hibernate——多对一和一对多映射浅析

Hibernate一对多映射 Hibernate级联映射前言关联1、概念2、关联的分类注意要点级联映射总结 前言 今天为大家分享的是Hibernate的映射,主要讲的是一对多的映射, hibernate的其他知识点之前就有提及过,以下是博客链接: 1、hibernate的初步介绍与学习 2、hibernate的入门 关联 1、概念 关联指的是类之间的引用关系。 如果类A与类B关联,那么被引用的类B将被定义为类A的属性。 public class A{ private B b = new B; 阅读详情

首先应该清楚多对一和一对多只是站在不同的角度看待问题,其本质是一样的。在思考这个问题的时候,不要把这两个概念混在一起,这样不容易理解,而要分开,站在不同的角度去解决同一个问题。

就拿员工和部门的例子来说,我们站在不同的角度,可能会遇到如下的几种情况:

站在员工的角度看,是多对一的关系:

 1、来了新员工,但是还不知道该分配到哪个部门,只有先把员工保存到员工表中,部门那一列设为空,待以后再更新其部门信息

 2、来了新员工,并且确定了该员工分配到哪个部门,则将员工的完整信息保存到员工表中

站在部门的角度看,是一对多的关系:

 1、成立了新部门,要向其中添加一些新员工

 2、要撤销一个部门,这时,这个部门中的员工的部门信息,全部置为空

此外应注意以下几个问题:

 1、若是保存员工,说明表中还没有这个员工的id,在保存的时候,设置其id属性的时候,就不要设置,用默认的就可以,这样系统会自动给这个员工分配一个id的

 2、若是更新某个员工,说明员工表中已经有了这个员工的id,在更新的时候,一定要指明其id,才可以找到这个员工

 3、无论是站在部门还是站在员工的角度,即无论是一对多还是多对一的关系,映射到数据库中的表的关系都是一样的,就相当于是两个表的关系的两种实现方式,但最终的结果是一样的。

下面,我们来看看如何具体的去实现上面提到的几种情况:

首先建立两个类:Department和Employee

package com.suo.domain;

import java.util.Set;

public class Department {
	private int id;
	private String name;
	private Set<Employee> emps;//用集合来存储员工
	
        ……//set/get方法	
}
package com.suo.domain;

public class Employee {
	private int id;
	private String name;
	private Department depart;//注意这里是以部门的对象来作为员工的属性的,这个思想很关键,是建立起部门和员工关联的关键
	
        ……//set/get方法
}


这两个类的映射文件,注意看其中的注释:

Employee的映射文件:

<hibernate-mapping package="com.suo.domain">
	
	<class name="Employee">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		<many-to-one name="depart" column="depart_id"></many-to-one>
		<!-- many-to-one指明了外键 ,会根据反射机制,找到要和Employee建立多对一关系的类,该列默认的是可以为空的-->
	</class>
	
</hibernate-mapping>
Department的映射文件:

<hibernate-mapping package="com.suo.domain">
	
	<class name="Department">
		<id name="id">
			<generator class="native"/>
		</id>
		<property name="name"/>
		
		<set name="emps">
			<key column="depart_id"/><!-- key指明了员工表中的外键-->
			<one-to-many class="Employee"/><!-- one-to-many指明了和哪个类进行一对多的映射 -->
		</set>
		<!-- 
			用set标签表示Department中的员工集合的属性,这个属性并没有映射到数据库中的部门表中,
			即部门表中,并没有emps这样的一个列。
		 -->
	</class>
	
</hibernate-mapping>

配置文件就不贴出来了……


然后再建立一个dao层的类:Many_VS_One,方便调用:

package com.suo.hibernate.impl;

import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.suo.domain.Employee;
import com.suo.hibernate.util.HibernateUtil;

public class Many_VS_One {
	
	public void saveObject(Object obj) {
		Session session=null;
		Transaction transaction=null;
		try{
			session=HibernateUtil.getSession();//获得一个连接
			transaction=session.beginTransaction();//开启一个事务
			session.save(obj);
			transaction.commit();
		}catch(HibernateException e){
			if(transaction!=null){
				transaction.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}
	public void updateObject(Object obj) {
		Session session=null;
		Transaction transaction=null;
		try{
			session=HibernateUtil.getSession();//获得一个连接
			transaction=session.beginTransaction();//开启一个事务
			session.update(obj);
			transaction.commit();
		}catch(HibernateException e){
			if(transaction!=null){
				transaction.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}
	public void deleteObject(Object obj) {
		Session session=null;
		Transaction transaction=null;
		try{
			session=HibernateUtil.getSession();//获得一个连接
			transaction=session.beginTransaction();//开启一个事务
			session.delete(obj);
			transaction.commit();
		}catch(HibernateException e){
			if(transaction!=null){
				transaction.rollback();
			}
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}
	
	public Employee queryEmp(int empId){
		Session session=null;
		try{
			session=HibernateUtil.getSession();
			Employee emp=(Employee)session.get(Employee.class, empId);//这里会执行一次查询employee的语句
			System.out.println(emp.getDepart().getName());//这里会执行一次查询department的语句
			Hibernate.initialize(emp.getDepart());//初始化代理,即初始化一个持久态的对象,加上这一句,才能在外部查询
			return emp;
		}catch(HibernateException e){
			e.printStackTrace();
			return null;
		}finally{
			if(session!=null){
				session.close();
			}
		}
	}
}

接下来,加在Test中解决问题了:

站在员工的角度看,是多对一的关系:

1、来了新员工,但是还不知道该分配到哪个部门,只有先把员工保存到员工表中,部门那一列设为空,待以后再更新其部门信息

这个很简单,只要在设置新增的员工属性的时候,不要设置他的部门属性,就可以了,注意,也不要设置他的id属性,全都用默认值,代码如下:

public static void main(String[] args) {
		Many_VS_One mvso=new Many_VS_One();
		
		Employee e1=new Employee();
		e1.setName("suo");
		
		Employee e2=new Employee();
		e2.setName("piao");

		mvso.saveObject(e1);
		mvso.saveObject(e2);
		
	}
这样就在员工表中插入了这两个员工的信息,但是所属部门那一列信息为空。


现在,确定了这两个员工的部门信息,那么就要更新这两个员工的部门了,这里我们假设将这两个员工都分配到了depart1,实现代码如下:

public static void main(String[] args) {
		Many_VS_One mvso=new Many_VS_One();
		
		Department depart=new Department();
		depart.setId(1);
		
		Employee e1=new Employee();
		e1.setId(1);
		e1.setName("suo");
		e1.setDepart(depart);//这句看似简单,但是很关键,它建立起了两个对象之间的关联
		
		Employee e2=new Employee();
		e2.setId(2);
		e2.setName("piao");
		e2.setDepart(depart);
		
		mvso.updateObject(e1);
		mvso.updateObject(e2);
		
	}
注意,执行这一步的前提是数据库中已经有了id为1的部门,还有了id为1、2的两个员工,只是要将员工的部门信息设置为id为1的部门。因为数据库中已经有了这几条记录,所以我们在new出来对象之后,一定要指定这个对象在数据库中的id,以告诉hibernate,这个对象不是新的,它已经存到数据库中去了。因为hibernate是根据id来判断一个新建的对象是否在数据库中。所以指明id很重要。其次,就是在设置员工属性的时候,要把所有属性重新设置一下,因为hibernate更新的时候,是更新的全部信息,从它执行的sql语句就可以看出来(update Employee set name=?, depart_id=? where id=?)。


 2、来了新员工,并且确定了该员工分配到哪个部门,则将员工的完整信息保存到员工表中

如果理解了1中的情况,那么这种情况,就很简单了,只要在保存员工的时候,设置上部门属性就可以了,但是不要忘了在new出来部门对象之后,要指定它在数据库中的id,否则,hibernate会认为这个部门对象是个瞬时状态的对象,没有在数据库中。而在new出来员工对象后,不要设置他的id属性啊,因为数据库中,还没有员工的信息,此时对象还处于瞬时状态。实现代码如下:

public static void main(String[] args) {
		Many_VS_One mvso=new Many_VS_One();
		
		Department depart=new Department();
		depart.setId(1);
		
		Employee e1=new Employee();
		e1.setName("suo");
		e1.setDepart(depart);//这句看似简单,但是很关键,它建立起了两个对象之间的关联
		
		Employee e2=new Employee();
		e2.setName("piao");
		e2.setDepart(depart);

		mvso.saveObject(e1);
		mvso.saveObject(e2);
		
	}


站在部门的角度看,是一对多的关系:

 1、成立了新部门,要向其中添加一些新员工

public static void main(String[] args) {
		Many_VS_One mvso=new Many_VS_One();
		
		Employee e1=new Employee();
		e1.setName("suo");
		
		Employee e2=new Employee();
		e2.setName("piao");
		
		Department depart=new Department();
		Set<Employee> emps=new HashSet<Employee>();
		emps.add(e1);
		emps.add(e2);
		depart.setName("depart1");
		depart.setEmps(emps);
	
		mvso.saveObject(e1);
		mvso.saveObject(e2);
		mvso.saveObject(depart);
			
	}
这里很不好理解的一步是depart.setEmps(emps);设置这个员工集合到depart中,这个映射到数据库中,就是在员工表中加上部门信息,即给外键添加信息。这和站在员工的角度给员工的属性设置部门信息,作用的效果是一样的。

 2、 要撤销一个部门,这时,这个部门中的员工的部门信息,全部置为空
这一步其实应该看数据库是怎么设置的,主表是否能在从表存在引用的条件下删除,本例中,默认的设置是允许的。删除的时候也很简单,只要指定部门的id即可,同理,删除员工也是如此。如下:

public static void main(String[] args) {
		Many_VS_One mvso=new Many_VS_One();
		
		Department depart=new Department();
		depart.setId(1);

		mvso.deleteObject(depart);
		
	}
这种情况下的删除,其实在数据库中分两步操作,首先将员工表的外键置空,然后在删除部门表,执行的sql语句如下:

Hibernate: update Employee set depart_id=null where depart_id=?
Hibernate: delete from Department where id=?


【低轨】Starlink星链-Ku波段OFDM信号同步机制与PNT应用潜力 本文深入解析了Starlink星链Ku波段OFDM信号的同步机制及其在定位、导航与授时(PNT)领域的应用潜力。研究发现,其信号帧内嵌的同步序列具有相位恒定特性,支持超长相干积分,可在极低信噪比下实现高精度伪距测量,为利用低轨卫星通信信号实现高精度PNT服务提供了新的技术路径。 阅读详情

相关推荐

Cisco Packet Tracer 7.3免登录技巧:3种方法快速跳过注册界面(附详细截图)

本文针对Cisco Packet Tracer 7.3启动时遇到的登录界面问题,提供了三种合法高效的解决方案。详细介绍了如何利用官方访客模式快速启动、注册思科账号实现一劳永逸登录,以及通过调整本地安装配置优化启动流程,帮助网络学习者与备考者绕过繁琐步骤,快速进入实验环境。

weixin_29305337的博客 739

MySQL数据库表关系详解(一对多、一对一、多对多)

MySQL数据库表关系详解(一对多、一对一、多对多)

Mr_WoLong 1万+

深入解析SGLang框架:从架构设计到核心组件实现

本文深入解析了SGLang框架的架构设计与核心组件实现。SGLang是一个专为大语言模型推理设计的高效框架,其核心优势在于清晰的分层架构、高效的调度策略以及精细的内存管理。文章详细剖析了其客户端接入、服务器端调度、模型执行引擎及Tokenizer/Detokenizer管理器等关键组件,揭示了其实现高性能推理的内部机制。

coffee的博客 577

MyBatis学习(四):一对多、多对一、多对多

在JAVA实体类中,类与类的一对多、多对一、多对多关系通过组合的形式实现; 在数据库中,表之间的一对多、多对一、多对多的关系通过外键来实现; 其中多对多的关系都需要通过一个中间类/表来实现,比如产品和订单之间,一个订单中可以有多个产品,一个产品也可以存在与多个订单之中,这种情况就称为多对多的关系,要建立两者之间的连接,需要建立一个中间类/表(订单项),一个订单项实例包含自身属性和产品属性、订单属性...

一步一步滴往上爬 1255

深入解析USB3.0一致性测试的关键技术与实践指南

本文深入解析了USB3.0一致性测试的核心技术与实践指南。文章阐述了测试如何确保设备在5Gbps高速传输下的信号完整性、电源管理合规性及协议兼容性,并提供了从测试系统搭建到完整流程执行的实战经验,帮助工程师有效应对高速信号、电源与兼容性三大核心挑战。

weixin_29164091的博客 281

利用python爬取东方财富网股吧评论并进行情感分析(一)

利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片拖拽 功能,你可以将本地的图片直

YMG521000的博客 1万+

对于多对一和一对多的理解

记录观看B站狂神说mybatis的讲解视频后,对于多对一和一对多的理解 多对一 在Mapper配置文件中 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.kua

Kris_Zeng_的博客 909

数据分片的三种方式:哈希、一致性哈希、按照数据范围分片

数据分片就是按照一定的规则,将数据集划分成相互独立、正交的数据子集,然后将数据子集分布到不同的节点上。通过设计合理的数据分片规则,可将系统中的数据分布在不同的物理数据库中,达到提升应用系统数据处理速度的目的。三种常用的数据分片方式:1. 哈希分片2. 一致性哈希分片(Consistent Hash)3. 按照数据范围分片(Range Based)数据分片的应用场景:1. 数据库扩展2. 分布式缓存对集群部署多个缓存节点,提高缓存的处理能力。

wjianwei666的专栏 1135

MyBatis一对多映射失败问题原因与解决方法(一对多查询返回结果只有一条)

mybatis高级映射一对多失败原因有多种。问题描述:我这里出现的问题是:在数据库中进行多表联查查询到多条记录结果是正常的一对多情况,但是mybatis映射时装载失败只保留了一条数据。1)数据库查询语句与结果如下。

qq_45507768的博客 2882

大模型多智能体协作面试题及参考答案

在多智能体系统里,代理定义自身目标或效用函数的过程与系统架构、应用场景紧密相关。从本质上讲,目标是代理行为的导向,而效用函数则是对目标达成程度的量化评估。代理通常依据自身角色、系统全局需求以及与其他代理的交互关系来确立目标。比如在合作型 MAS 中,代理目标可能需要与全局目标对齐,像多个物流机器人协作完成货物配送时,每个机器人的目标会围绕 “高效完成分配任务”“避免路径冲突” 等展开,其效用函数可能涉及任务完成时间、能耗等指标的加权求和。目标定义的方式存在多种类型。

大模型大数据攻城狮的专栏 1022

Python爬虫实战:亚马逊中国模拟登录与二次验证全解析(2026最新版)

在数据驱动的商业时代,亚马逊作为全球最大的电商平台,其商品数据、价格波动、评论信息、库存状态等对市场分析、竞品研究、价格监控具有极高的价值。然而,亚马逊的反爬虫机制堪称行业标杆——从请求指纹校验、动态令牌、行为分析到二次验证(2FA),层层设防。本篇文章将带你从零开始,使用2026年最新的Python技术栈,完整实现亚马逊中国(z.cn)的模拟登录,并攻克二次验证难题。郑重声明:本文仅限技术研究与个人学习用途,严禁用于批量抓取、价格劫持、账户爆破等违法违规行为。

2201_76125261的博客 378

一对多关联映射(单向)

“一对多”,顾名思义,是由“一”的一端加载“多”的一端,关系交由“一”来维护。反映在Java代码中就是在“一”的一端中持有“多”一端的集合,而hibernate把这种关系反映到数据库的策略是在“多”一端的表上加上一个外键指向“一”一端表。显现,其实这采用的还是“多対一”的映射原理。      但是,在“一”一端维护关系是我们不提倡的,因为它有不可避免的缺点,即级联插入数据的时候要先插“多”一...

yenairong的博客 441

财务数智化——解读224页 2025年数智技术业财融合应用蓝皮书【附全文阅读】

《数智技术赋能业财融合蓝皮书》面向企业管理者及数字化转型从业者,系统阐述数智技术在业财融合中的应用。全书围绕技术基础(定义、分类、发展趋势)、融合框架(三阶段路径与三层价值)、七大行业应用场景(涵盖核算自动化、智能收款、项目管控等)、关键技术(AI、大数据等)及实施要点(组织协同、数据治理等),通过典型案例为企业提供从技术到实践的全面指导,助力实现数据贯通与价值创造。

cdfunlove的博客 1747

hibernate多对一和一对多映射浅析

首先应该清楚多对一和一对多只是站在不同的角度看待问题,其本质是一样的。在思考这个问题的时候,不要把这两个概念混在一起,这样不容易理解,而要分开,站在不同的角度去解决同一个问题。 就拿员工和部门的例子来说,我们站在不同的角度,可能会遇到如下的几种情况: 站在员工的角度看,是多对一的关系:  1、来了新员工,但是还不知道该分配到哪个部门,只有先把员工保存到员工表中,部门那一列设为空,待以后再更新

我爱编程持之以恒 728

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Hibernate框架【四】——基本映射——多对一和一对多映射

由于公司项目上进行面向对象的架构设计对于ORM部分使用的是Spring Data JPA框架。将ORM完全交给Spring Data JPA框架,而Hibernate是Spring Data JPA的实现方式之一,通过对HIbernate框架的学习能够更好的理解ORM框架,以及Spring Data JPA框架。下面的博客是对于Hibernate框架中的基本映射中的多对一和一对多映射进行的实践,总结的并不全面,旨在多对一和一对多映射关系有一个宏观了解并能够进行基本运用。

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 1460

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

咖啡 2061

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Hibernate入门之关系篇:多对一和一对多映射

关联关系映射,是对象映射关系中相对复杂的一种,但也是用处最多的一种,因为数据中的表不可能都是单独存在,彼此之间必定存在千丝万缕的联系,这也是关系型数据库的特征所在。同样关联关系的映射,也是对象关系映射中的难点,重点,仔细揣摩,也还是很容易理解掌握的。          上篇博客,从最简单的一对一映射开始最开端。在关系映射里面,使用频率最高的就是,一对多和多对一的关系。本文,介绍简单的一对多和多对

7926

【Hibernate】——一对多映射

正如上篇【Hibernate】——多对一映射 所说,一对多映射是多对一的反例,一个班有多个学生,这就是一种一 对多的体现。如图所示:           建立Class实体类,在Class建立Student的集合关系: package com.bjpowernode.hibernate; import java.util.Set; /** * 建立Class实体类 * @au

努力成为自己的榜样。 642

Hibernate详解(2)——一对多映射分析

在学习Hibernate的时候,很大一部分任务量是配置实体映射关系,Hibernate的映射关系的关键就是掌握面向对象的思想,搞清楚实体之间的关系。每一个实体关系都对应这UML中的对象关系。我们配置这些对象的关系模型。下面分节讲述Hibernate的关系映射。 本节主要讲述Hibernate的一和多的关系。之所以称之为一和多的关系,是因为他包括三种关系:单向一对多,单向多对一,双向一对多。我这里统

李守宏 7364

Hibernate一对多映射_慕课网笔记

一、 简介 Hibernate的映射类型(最常用为一对多和多对一映射):  一对多 (one-to-many)  多对一 (many-to-one) 一对一 (one-to-one) 多对多 (many-to-many) 二、单向一对多关联 1. 定义 就像班级和学生。站在班级的角度看。班级和学生就是一对多的关系,班级为一方,学生为多方且是单向的。 如何实现这种关系?

xjy_1666的博客 724

Hibernate初探之一对多映射(2)

以下内容来自慕课网视频《Hibernate初探之一对多映射》 第三章 单向多对一关联 3-2 单向多对一的配置 3-3 测试-添加学生信息 3-3 双向多对一测试 第四章 inverse和cascade属性 4-1 inverse属性 4-2 cascade属性的用法第三章 单向多对一关联 多对一的关系和关系数据库中的外键参照关系最匹配,即在多方的表中的一个外键参照另一个表的主键。 通

肆尾葱的博客 1011

Hibernate初探之一对多映射

1.一对多映射简介Hibernate的映射类型: 一对多 (one-to-many) 多对一 (many-to-one) 一对一 (one-to-one) 多对多 (many-to-many) 一对多映射 在数据库中,可以通过添加主外键的关联,表现一对多关系。那么在hibernate中该如何来表示呢?通过在一方来持有多方的集合实现,即在“一”的一端中使用<SET>元素表示持有多的一端的

不积跬步,无以千里 349

Hibernate一对多映射示例注释

Hibernate一对多映射示例注释 今天我们将研究Hibernate中的One To Many Mapping。我们将使用Annotation和XML配置来研究Hibernate One To Many Mapping示例。 目录[隐藏] 1Hibernate中的一对多映射 1.1Hibernate中的一对多映射 - 数据库设置 1.2Hibernate一对多...

YunWisdom 301

hibernate 单向多对一,一对多,双向多对一详解

1、单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系部门--人员使用人员时如果只需要获取对应部门信息(user.getdeptarment())不需要 从部门下的人员信息时,就配置成单向 多对一使用部门时如果只需要获取部门下人员信息(deptartmanet.getusers())不需要 从人员获取部门信息时,就配置成单向 一...

wanderlustLee的博客 1695

Hibernate学习笔记(六):多对一映射 和 一对多映射

需求:员工和 部门; 员工 和 部门的对应关系是 多对一;部门 和 员工的对应关系是 一对多。 项目结构: 员工实体类 Employee.java: package com.hibernate.one2many; public class Employee { private int empId; private String empName; pri...

秋忆夏伤的博客 445

Hibernate多对一和一对多映射

前言在之前我们学到了集合映射,但是集合映射有一个明显的缺陷,就是不能满足多的一方保存多个字段多个属性的数据,这就需要我们学习集合中保存一个对象,然后在配置中采取多对一和一对多的映射关系,把对象和表之间的关系对应起来,满足我们的需要。在实际的开发中,多对一和一对多的映射应用非常广泛,也是每个学习Hibernate框架的同学必须掌握的内容。本文主要通过部门与员工的案例来展开。部门与员工案例首先要清楚部门

nwpu_geeker的博客 1608
上一篇: hibernate——两种查询方式
下一篇: hibernate——一对一映射(1)
hackerain
博客等级 码龄16年 753粉丝 220原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值