hibernate JPA注解主键生成策略

JPA ID生成策略 数据的唯一性是很平常的要求,但是如果框架不能提供相关的控制而由程序员完全控制是很危险的,在JPA中,有下面四种策略。A.容器自动生成---GeneratorType.AUTO  由JPA自动生成B.使用数据库的自动增长字段生成---GenerationType.IDENTITY JPA 容器将使用数据库的自增长字段为新增加的实体对象赋唯一值。这种情况下需要数据库提供对自增长字段的支持,SQL Se 阅读详情

Id生成策略:

@GeneratedValue,JPA通用策略生成器 。

        JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO. 
          TABLE:使用一个特定的数据库表格来保存主键。 
          SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。 

1.sequence 根据底层数据库的序列来生成主键,条件是数据库支持序列

@id
@sequenceGenerator(name="seq",sequenceName="seq_house")
@GeneratedValue(generator="seq",strategy=GenerationType.AUTO)
2.identity:主键有数据库自动生成(SQL server Mysql,DB2)

@Id
@GenerateValue(strategy=GeneratorType.IDENTITY)
3.AUTO:主键由程序控制(编写程序生成)

@id
@GeneratedValue(Strategy=GengeratorType.AUTO)
4.native 对于oracle 采用sequence方式,对于Mysql,和sql server采用identity(自增主键生成器),
         native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)。
  @GenericGenerator hibernate主键策略生成器 
  @GenericGenerator注解配合@GeneratedValue一起使用,@GeneratedValue注解中的"generator"
属性要与@GenericGenerator注解中name属性一致,strategy属性表示hibernate的主键生成策略 

@id
@GenericGenerator(name="seq",strategy="native")
@GeneratedValue(generator="seq",)
5.increment

@Id
@GeneratedValue(generator="increment")
@GenericGenerator(name="increment", strategy = "increment")
6.assigned: 在插入数据的时候主键由程序处理(很常用),这是 <generator>元素没有指定时的默认生成策略。等同于JPA中的AUTO。 

@GeneratedValue(generator = "seq")    
@GenericGenerator(name = "seq", strategy = "assigned ") 
7.sequence: 调用底层数据库的序列来生成主键,要设定序列名,不然hibernate无法找到。 

@GeneratedValue(generator = "xxx")  
@GenericGenerator(name = "xxx", strategy = "sequence", parameters = { @Parameter(name = "sequence", value = "底层数据库sequenceName") }

8.不常用的

uuid: 采用128位的uuid算法生成主键,uuid被编码为一个32位16进制数字的字符串。占用空间大(字符串类型)。 

@GeneratedValue(generator = "xxx")    
@GenericGenerator(name = "xxx", strategy = "uuid")   
hilo: 使用hilo生成策略,要在数据库中建立一张额外的表,默认表名为hibernate_unique_key,默认字段为integer类型,名称是next_hi(比较少用)。 
@GeneratedValue(generator = "xxx")    
@GenericGenerator(name = "xxx", strategy = "hilo")   
guid: 采用数据库底层的guid算法机制,对应MYSQL的uuid()函数,SQL Server的newid()函数,ORACLE的rawtohex(sys_guid())函数等。 
@GeneratedValue(generator = "xxx")    
@GenericGenerator(name = "xxx", strategy = "guid")   
uuid.hex: 看uuid,建议用uuid替换。 
@GeneratedValue(generator = "xxx")    
@GenericGenerator(name = "xxx", strategy = "uuid.hex")   








Hibernate各种主键生成策略 Hibernate各种主键生成策略详解,包括 assigned increment hilo seqhilo sequence identity native uuid foreign uuid.hex sequence-identity 等 立即下载

相关推荐

Hibernate注解映射联合主键

联合主键用Hibernate注解映射方式主要有三种: 第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id 第二、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@EmbeddedId 第三、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并要重写equals和hashcode.最后在主类中(该类包含联合主键类中的字段)将联合主键字段都注解为@Id,并在该类上方将上这样的注解:@IdClass(联合主键类.class)

JPA @Id 和 @GeneratedValue 注解详解

@Id: @Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。 @Id标注也可置于属性的getter方法之前。@GeneratedValue: @GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定。默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer对应iden...

coding1994的博客 10万+

hibernate的主键生成策略

hibernate的主键生成策略介绍,详细介绍了有关hibernate的常用主键生成策略,希望对一些正在学习hibernate的同学有一定的帮助

第二百三十二节 JPA教程 - JPA教程 - JPA ID自动生成器示例、JPA ID生成策略示例

第二百三十二节 JPA教程 - JPA教程 - JPA ID自动生成器示例、JPA ID生成策略示例

2301_78772942的博客 1329

总结hibernate常用主键生成策略。

1主键常用的生成策略 2对数据库的依赖性总结 3关于主键生成策略的选择 详细解释

Hibernate主键生成策略总结

NULL 博文链接:https://alpha2009.iteye.com/blog/1074750

GenerationType四种类型

JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO. TABLE:使用一个特定的数据库表格来保存主键。 SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。 IDENTITY:主键由数据库自动生成(主要是自动增长型) AUTO:主键由程序控制。 1、GenerationType.TABLE 使用一个特定的数据库表格来保存主键,持久化引擎通过关系数据库的一张特定的表格来生成主键,这种策略的好处就是不依赖于外部环境和数据库的具体实现,在不同数据库间可以很容易的

u013343616的博客 1万+

ARM Memory Compiler实战指南:从参数配置到GDSII生成的全流程解析

本文详细解析了ARM Memory Compiler在SRAM设计中的全流程应用,从基础参数配置到GDSII文件生成。涵盖SRAM类型选择、核心参数配置策略、高级优化技巧及TSMC 28nm工艺下的实战案例,帮助IC设计工程师高效实现存储器模块的优化设计。

game4的博客 416

Hibernate之主键生成策略

一、主键类型 1.自然主键(主键本身就是表中的一个字段,实体中一个具体的属性) 表中已经具有某字段,并且该字段具有业务含义作为主键,称之为自然主键 2.代理主键(主键不是实体中某个具体的属性,而是一个不相关的字段) 表中不具备业务含义的字段作为主键,称之为代理主键。更合理的方式是使用代理主键。 二、主键生成策略 1.自然主键 assigned(用户手动录入)   由J...

weixin_30256901的博客 218

Badcase归因分析“四部曲”

badcase是业内的专业名词,简单解释一下。bad是坏,case是案例,说白了就是模型或者具体规则无法很好预测的那些案例。以分类模型为例,本来一个样本应该是负类的,结果预测为正类,那这个样本就能被称为bad case。那相对应的就是good case就是优秀案例。

qq_25438419的博客 3517

UE4载具性能调优指南:从参数设置到实战优化

本文详细解析了UE4载具性能调优的关键技巧,从WheeledVehicle类构建到轮子参数、传动系统设置,再到物理属性与操控调校。通过实战案例分享,帮助开发者优化载具的速度、加速度等核心性能,提升游戏体验。特别适合需要精细调校载具物理特性的开发者参考。

weixin_29019241的博客 469

JPA实体注解与hibernate主键生成策略

JPA实体注解与hibernate主键生成策略

fswhwd的博客 173

无人机机场自动化巡检钢铁厂管廊技术方案

摘要:针对钢厂管廊人工巡检效率低、成本高等问题,提出5G+无人机自主巡检解决方案。该系统由智能机库、5G无人机、AI分析平台等组成,可实现自动起降、实时数据传输、缺陷智能识别等功能。无人机配备四合一云台相机,支持42分钟续航和复杂环境飞行,通过深度学习算法自动生成巡检报告。方案实施后可提升巡检效率3倍以上,降低人工成本和安全风险,实现全天候自动化巡检,为钢厂管廊安全管理提供智能化技术支持。(149字)

gxdhlg的专栏 1683

使用注解风格学习Hibernate和JPA的4种主键生成策略

Hibernate内置了很多主键生成策略,这些策略可以分为两类:一类是JPA标准的主键生成策略,一类是Hibernate框架特有的主键生成策略。JPA标准策略有4种:auto策略、table策略、sequence策略、identity策略;余下的都是hibernate自己的策略,包括我们常用的native、uuid、assigned、sequence等。

aty 2363

AutoSAR配置视频讲解:总目录

AutoSAR实验视频讲解:闪烁一颗LED实验【总目录】 欢迎大家来到雪云飞星的《AutoSAR实验视频讲解》,本专栏是一个关于AutoSAR的闪烁LED灯的实验课程,一共8节课,每节课的视频都放在文章最后,传送门如下: 前言 AutoSAR实验视频讲解:简介 EB 的Mcal配置 AutoSAR实验视频讲解:Mcal配置 DaVinci Cfg配置 AutoSAR实验视频讲解:新建DaVinci工程 AutoSAR实验视频讲解:Os配置(预计2021-3-10更新) AutoSAR实验视频讲解:检查校验报

雪云飞星的博客 2万+

Cadence画PCB的傻瓜式教程

1.原理图1)建立元件库2)建立原理图3)在原理图中画好电路图4)利用MENTOR-GRAPHICS-IPC-7351-LP-VIEWER查看元件的封装信息,用pad designer画焊盘,用pcb editor画元件的封装(对照LP_VIEWER),(也可以使用package wizard)5)在原理图中为元件添加封装信息(键入)6)Drc检查7)生成网表2.Pcb1)设置...

tianpu2320959696的博客 1万+

mysql jpa uuid 主键_JPA实体注解与hibernate主键生成策略

用hibernate注解开发项目,对于主键的生成策略: 1. 实体标志: @Entity @Indexed(index=group) @Table(name=GROUP_LAYMOD) *@Indexed 标识需要进行索引的对象, * 属性 : index指定索引文件的路径 @DocumentId用于标示实体类中的唯一的属性保存在索引文件中,用hibernate注解开发项目,对于主键的生成策略:1...

weixin_42347426的博客 336

【笔记篇】Davinci Configurator OS模块(下)

AUTOSAR OS的配置项和Vevtor MICROSAR OS的特性

weixin_47571898的博客 1153

使用注解风格学习Hibernate和JPA的主键生成策略

使用注解风格学习Hibernate和JPA的主键生成策略

hgffhh的博客 231

整车电检工艺流程

本文是笔者在从事汽车行业智能制造领域过程,对于整车电检工艺流程的理解与总结。

qq_40664711的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

转JPA实体注解与hibernate主键生成策略

JPA实体注解与hibernate主键生成策略    用hibernate注解开发项目,对于主键的生成策略有些模糊,下面是从新浪网里面看到的一篇关于hibernate注解以及主键生成策略的文章,值得一看:    1. 实体标志:     @Entity      @Indexed(index="group")      @Table(name="GROUP_LAYMOD")     ...

286

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: Hibernate注解方法使用总结
下一篇: AbstractInterceptor和MethodFilterInterceptor的区别
满地节操1
博客等级 码龄10年 12粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值