Hibernate标示符属性的生成策略

标示符属性

Hibernate中的标示符属性,也可以称为Hibernate主键

标示符属性赋予每个持久化对象独一无二的数值,以此区分不同的持久化对象

 

标示符属性的生产策略

 

increment 生成策略

从数据库表中获取当前主键字段的最大值,然后在最大值的基础上加1,作为当前持久化对象的标示符属性值

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="incerment">
            </generator>
</id>

 

 

identity  生成策略

在MS SQL Server、MySQL和DB2等数据库中,都可以设置表中某一个字段的数值自动增长,而identity生成策略就是通过这种方式,为当前的记录获取主键的同时为持久化对象赋予标示符属性值。(不支持Oracle)

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="iidentity">
            </generator>
</id>

 

sequence 生成策略

在Oracle、DB2和PostgreSQL等数据库中创建一个序列(sequence),然后Hibernate通过序列为当前的记录获取主键值,进而为持久化对象赋予标示符属性值

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="sequence">
                  <!-- xx_seq就是序列的名字-->  
                  <param name="sequence">xx_seq</param>
            </generator>
</id>

 

hilo  生成策略

hilo 生成策略采用一种称为高/低位(hi/lo)的高效算法,产生的标示符属性值为long、short、int以及他们封装类的类型

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="hil">
                  <!-- 在数据库中新建个表,hibernate_key为新建的表
               next_hivalue为新建表中的字段,需要有值,他会通过
              高地位算法生成一些复杂的值,且不会重复-->  
                  <param name="table">hibernate_key</param>
                   <param name="column">next_hivalue</param>
            </generator>
</id>

 

 

seqhilo 生成策略

seqhilo生成策略使用的还是高/低位算法,产生的标示符属性为long、short、int以及他们封装的类型,与hilo生成策略不同的是,它使用指定的sequence获取高位值。

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="seqhilo">
                  <!-- xx_seq就是序列的名字-->  
                  <param name="seqhilo">xx_seq</param>
            </generator>
</id>

 

uuid 生成策略

uuid生成策略采用128位的UUID算法来生成一个字符串类型的主键值,这个算法使用ip地址、jvm的启动时间(精确到1/4秒),系统时间和一个计数器值(在当前jvm中唯一)经过计算来产生标示符属性值,可以用于分布式的Hibernate应用中。

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="uuid">
            </generator>
</id>

 

native 生成策略

让Hibernate自己根据所使用的数据库的支持能力,从identity、sequence或者hilo生成策略中选择一种标示符属性生成方式。

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="native">
            </generator>
</id>

 

assigned 生成策略

使用assigned生成策略表示由Hibernate应用自主指定标示符属性的数值,也就是说,在调用Session对象的save()方法持久化对象时,需要先对持久化对象的标示符属性赋值。

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="assigned">
            </generator>
</id>

 

guid 生成策略

这种标示符属性生成策略,借助MS SQL Server 或者MysQL数据库中的GUID字符串产生标示符属性值。

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="guid">
            </generator>
</id>

 

foreign 生成策略

foreign 生成策略通过所关联的持久坏对象,为当前持久化对象设置标示符属性值。

<id name="id" type="java.lang.Integer" column="ID">
            <generator class="foreign">
                  <!---->
                  <param name="property">user</param>
            </generator>
</id>

 

 

 

科研软件|Adobe Photoshop 2024 (PS 2024) 阅读详情

相关推荐

日前日内多阶段多时间尺度源荷储协调调度(matlab代码)

多阶段多时间尺度的协调调度的优势是考虑新能源出力的波 动性与随机性,需求响应负荷的不确定性会对电网制定的日前调度计划准确性造成影响,也就是能够更加精准的进行调度和分析,优化结果的可用性更强。在这方面论文里面,金力的《考虑特性分布的储能电站接入的电网多时间尺度源储荷协调调度策略》就考虑了日前日内实时三个阶段调度,每个阶段考虑了不同负荷需求响应策略,同时考虑了负荷波动性的影响,具有很强的参考意义。 目录 一、模型 二、程序运行 三、程序链接 一、模型 负荷需求响应考虑电价型和激励型两种,电.

zhangxd212489的博客 7915

Hibernate标识符属性(主键)生成策略全析

    数据库中的主键能够唯一识别一条记录,它可以是一个字段也可以是多个字段的组合。主键的主要作用是标识表中的一条记录,还有和其他表中的数据进行关联。数据库中的主键类型必须符合唯一性约束和非空约束。作为附加属性,主键应该尽可能简洁,不要包含过多属性。根据这个原则,主键可以分为自然主键和代理主键。     自然主键是数据表中有逻辑含义的字段,比如身份证号来唯一确定一条个人记录。也可以通过学号和课程号...

thw 276

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5131

Hibernate标识符生成策略

Java语言中按照内存地址来区分或识别一个类的不同对象,而关系型数据库按主键值来区分或识别同一个表的不同记录。作为一个优秀的ORM框架,Hibernate使用OID来协调这二者之间的矛盾。OID是关系数据库中的主键(通常是代理主键,也有自然主键)在Java对象模型中的等价物。在运行时,Hibernate根据OID来维持Java对象和数据库表中记录的对应关系。 与表的代理主键对应,OID也

北鱼扶摇 889

【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用

【图像超分】论文精读:Image Super-Resolution Using Deep Convolutional Networks(SRCNN)请配合上述论文精读文章使用,效果更佳!图像超分辨率SRCNN和FSRCNN复现代码,除基本的网络实现外,还有特征图可视化,PSNR曲线图可视化,测试自己的图像数据等不想理解原理,希望直接跑通然后应用到自己的图像数据的同学,请直接下载上面的代码,有训练好的模型,直接用即可。具体使用方式见代码中的README!有问题来本文评论区留言!准备数据集,以及数据预处理。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 2万+

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3909

Hibernate系列学习之映射持久化类--标识符生成策略

一、标识符理解Java标识和性等性,主键,键生成器,标识符生成器1.1什么是标识符1.1.1理解Java标识和相等性Java标识: Java对象标识(==)是由Java虚拟机定义的一个概念。如果两个引用都指向相同的内存位置,则他们是完全相同的。 对象相等性: 对象相等性是由类的equals()所定义的一个概念,有时候也成为等效性。 等效性意味着两个不同的实例具有相同的值--相同的状态。例如:如果St

高自强的博客 698

RuyiDify如何创建知识库API密钥:让程序安全访问知识库

知识库 API Key 是程序访问知识库的钥匙。创建它很简单,但真正重要的是知道它能做什么、应该放在哪里、不能暴露给谁。RuyiDify 讲这一步,不是为了让大家多记一个按钮,而是为了把知识库从“人工上传资料”推进到“程序化维护资料”。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 137

主键的生成策略

主键的生成策略 的取值可以为: 1、  increment:用于long,short或者int类型生成的唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用,在集群下不要使用 2、  identity:返回的标识符是long,short或者int类型。对DB2,MS SQL Service,Sybase和HypersonicSQL的内置标识符字段提供支持 3、  sequence:在

2803

2、探索谷歌云平台(GCP):入门指南

本文全面介绍了谷歌云平台(GCP)的入门知识,涵盖其全球基础设施、核心服务和使用方法。内容包括GCP区域与可用区结构、创建免费账户、配置计算资源(如GCE虚拟机)、存储类型(PD、Filestore、GCS)、网络架构(VPC)、组织与项目管理、身份访问控制(IAM),以及计算、存储、数据库、大数据和人工智能等各类云服务。文章还提供了资源规划、安全管理和成本控制等实用建议,帮助用户快速上手并高效利用GCP构建可扩展的云解决方案。

uber9的博客 255

【工具插件类教学】Unity翻书效果插件Book-Page Curl Pro教程

特征: • 从左到右和从右到左翻页 • 与画布缩放器 配合使用 • 可配置的自动翻转脚本 • 支持向页面 添加 UI 元素 • 支持透明页面 • 适用于“世界空间”画布

纯技术流日常开发商业开发记录总结等 3674

hibernate的主键生成策略包括那些

hibernate 主键生成策略有三种:序列 自增 通用 1、序列 sequence 只能在oracle 和 DB2中使用 2、自增 identity 智能在sqlserver 和 mysql 中使用,同时建表的时候,设置列 为 auto increment。 3、通用 native mysql 就用

柠檬不萌 1726

2026华为OD机试(JAVA&Go)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Java实现。

MISAYAONE的博客 34万+

新手上路之Hibernate(二):基本映射以及一些原则与主键生成策略

一、什么是映射 在上一篇文章中 新手上路之Hibernate:第一个Hibernate例子,通过一个例子了解了什么是Hibernate。而其中最重要的就是通过User.hbm.xml来配置映射。这里所说的映射就是对象关系映射:将对象数据保存到数据库中,同时可以将数据库数据读入对象中,开发人员只对对象进行操作就可以完成对数据库数据的操作。 二、什么是基本映射 知道了什么是映射,那么

步春良 7806

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hibernate提供的几种内置标示符生成器

increment 适用于代理主键。由Hibernate自动以递增的方式生成标识符,每次增量为1 由于increment生成标识符的机制不依赖于底层数据库系统,因此它适合所有的数据库系统。 适用于只有单个Hibernate应用进程访问同一个数据库的场合,在集群环境下不推荐使用。 OID必须为long、int或short类型。 identity 适用于代理主键。有底层数据库生成标识符。前提是

guo_net的专栏 563

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Hibernate和UUID标示符

简介 在前一篇博客中,我们讨论了UUID代理键(surrogate keys)以及比自增标示符更适用的使用场景。 UUID的数据库生成方式 有很多种方式可表达一个128位UUID。每当遇到疑问时,我喜欢用stack exchange来作为权威参考。 由于表ID一般会建索引,经过压缩的数据类型会占用更少的空间。按照效率由高到低有如下几种选择: 一部分数据库(

青色刀客的专栏 641

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Hibernate主键生成策略及其配置

一、主键生成策略及其配置 [b]1.increment[/b]生成器由Hibernate以递增的方式生成主键值,它的原理是先查询目标表最大的主键值+1,作为新增记录的主键值。 increment是最简单的生成策略,但在高并发环境下可能会出现主键冲突! increment不推荐在项目中使用 [b]2.identity[/b]标示符生成器由底层数据库来负责生成主键值,它要求底层数据库将主键定义...

liqian5251的博客 250

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

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

fswhwd的博客 173

Hibernate ID生成策略/联合主键解决方案

对于不同数据库的主键id,生成是不一样的.在Hibernate中也有相对应的策略.可选的子元素是一个Java类的名字,用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数,用元素来传递所有的生成器都实现org.hibernate.id.IdentifierGenerator接口。下面是一些内置生成器的快捷名字:increment 用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。在集群下不要使用。identity 对DB

MyJavaBlog的专栏 4432

hibernate id属性 generator class=""详解

原文来自:http://blog.youkuaiyun.com/yufaw/article/details/7680403 “assigned”     主键由外部程序负责生成,在   save()   之前指定一个。            “hilo”     通过hi/lo   算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。             “seqhi

zy332719794的专栏 1万+

Hibernate中id generator属性解析

简单的说,generator 是为我们快速高效生成主键的。对于主键,相信我们大家都非常了解,如何选择主键,往往是我们必须考虑的事情。     在做.NET的JW项目的时候,我们使用过GUID来生成主键,好处不言而喻,这次在Hibernate中遇到了同样类型的主键生成机制,所以总结一下。       这里主要介绍Hibernate中几个比较常见的主键生成方式 1、assigned

小北 1737

mysql uuid 生成策略_Hibernate实现,使用UUID.主键的生成策略

警告信息如下:3.1 WARN [org.hibernate.id.UUIDHexGenerator] (ServerService Thread Pool -- 48) HHH000409:Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; con...

weixin_34125314的博客 612

浅谈Hibernate之映射对象标示符(OID)

1.数据库用主键作为记录的唯一标识   自然主键:将含有业务含义的字段作为主键   代理主键:不具备业务含义的字段作为主键     自动生成代理主键:   (1)把主键定义为自动增长标识符   (2)从序列中获取自动增长的标识符    2.Java对象依据内存地址区分对象   判断方式有两种:   (1)通过“==”号来判断   (2)通过.eqauls()方法来...

iteye_657的博客 171

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

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

weixin_42347426的博客 336
上一篇: MyEclipse6.5安装SVN插件的三种方法
下一篇: Hibernate持久化对象生命周期
fehly
博客等级 码龄18年 1粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值