实体类的ID生成策略
主键选用原则--无意义字段/非业务
主键不能修改
主键是程序实现上利用的,与客户的实际业务无关---逻辑主键,没有业务上的意义
因为主键与业务无关,也就防止了被修改的可能性
id生成策略---解决了id生成的方式--由hibernate来完成,程序员不需要考虑,完全由hibernate进行管理
<id name="id">
<generator class="native"/>
</id>
在调用save()将对象变为持久化对象的时候,hibernate将利用id生成策略算法来对对象进行id赋值
因为,持久化对象必具有唯一的id标识值
项目中常用的生成策略:
native --依赖于数据库底层,适用范围 short int long---不同表的id都为1开始,由hibernate根据数据库类型自动选择策略,如果是mysql,则identity,如果是oracle,则sequence,否则hilo策略。
mysql : identity
oracle: sequence
hilo --依赖于数据库底层,适用范围 short int long ---一个数据库下的id不会重复
uuid 字符串id --不依赖于数据库底层,在内存中生成,整个网络中id标识符唯一
foreign 一对一外键关联时,用关联表的id值作为本表的id值
assign 程序员手动给id赋值
save()是否立即发出insert语句,取决于id值的生成是否依赖数据库底层
identity与sequence策略:
id从1开始,依次递增,依赖数据库底层来生成id
必须先insert才会有id值,所以在save()被调用时,会立即发出insert语句
因为需要数据库底层来生成id,在生成id之后,hibernate会更新内存中的id值;
hilo与uuid策略:
id值不是递增的,不依赖/不完全依赖数据库底层生成id
在save()被调用时,不会立即发出insert语句,等到commit()时才发出insert语句。
(hilo采用高低位算法生成id值,在内存中会生成一个值,再在数据库中生成一个值,这个值基于数据库中的其它表来生成,所以不需要立即插入到表中;uuid在内存中即可生成)
因为id值由hibernate在内存中自动生成,会在commit()被调用后,才会发出insert语句。
批量插入数据时,如果使用native策略,将非常的低效:
每次save()都必须先发insert语句,无法利用JDBC的批处理功能!
解决方案:
1.使用assign策略,手动指定id(先查询当前表的id值,得出下一个id值,这样就实现id连续了)
2.每次save()调用200次,flush(),批量将这200条插入到数据库中
相关推荐
地级市GDP及产业结构数据-最新.zip
2006-2023年上市公司资产误定价Misp数据集(4.9万样本,含原始数据、代码及结果,最新).zip
本文对两大主流FPGA厂商的从串配置模式(Altera:Passive Serial Mode;Xilinx:Slave Serial Mode)进行了描述,并指出了主要的不同之处。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
R语言高级建模课程全集-最新整理.zip
内容概要:本文档展示了使用 Python绘制一个三维爱心的具体方法与步骤。 适用人群:适合对Python编程语言有一定了解,并且希望学习如何完成复杂图像渲染的研究者或开发者。 使用场景及目标:本项目适用于教学环境或是个人兴趣爱好,能够帮助读者更好地掌握三维图形编程技巧以及了解隐函数作图的基本原理。
该文档为核心配置实验思路,在实验中有不懂的请参考该思路
四大政策效应评价方法全集-最新.zip
该实验为核心配置实验,与下一个采用其不同的方法进行配置,其核心思路一样,顺序略有差异,请大家进行对比反复琢磨
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
单基因生物信息学分析视频教程-完整版最新.zip
在现代工业自动化和电动汽车领域,永磁同步电机(PMSM)因其高效率、高性能和紧凑设计而备受青睐。本文将详细介绍如何在Simulink中实现PMSM的控制,包括矢量控制(FOC)策略的实现,以及必要的代码示例,旨在为工程师和研究者提供实用的指导。 一、PMSM控制概述 永磁同步电机(PMSM)以其高功率密度、高效率和优异的动态响应而广泛应用于工业和汽车领域。在Simulink中实现PMSM控制,通常采用矢量控制(Field-Oriented Control, FOC)策略,该策略通过磁场定向控制实现电机转矩和速度的精确控制。 二、PMSM数学模型与Simulink实现 PMSM的数学模型包括电压方程、磁链方程和转矩方程。在Simulink中,我们可以通过构建相应的模块来实现这些方程。 1. PMSM数学模型 电压方程: u d = R s i d − ω e L q i q + L d d i d d t + ω e ψ f u d =Rsid−ω e L q iq+
2000-2020年中国海洋统计年鉴-最新数据发布.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
安慰剂检验代码与数据文章-最新研究成果.zip
VB+ACCESS学生公寓管理系统(源代码+系统)
职业规划(1).zip
网络办公系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
地级市进出口贸易及外资利用数据(297城)-最新.zip
Jupyter-Notebook