Hibernate标识符生成器

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: “hilo”通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。“seqhilo”与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的 Sequence,适用于支持 Sequence 的数据库,如Oracle。

“hilo”
通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。


“seqhilo”
与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的 Sequence,适用于支持 Sequence 的数据库,如Oracle。


“increment”
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。


“identity”
采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL 中的主键生成机制。


“sequence”
采用数据库提供的 sequence 机制生成主键。如 Oralce 中的Sequence。


“native”
由 Hibernate 根据使用的数据库自行判断采用 identity、hilo、sequence 其中一种作为主键生成方式。


“uuid.hex”
由 Hibernate 基于128 位 UUID 算法 生成16 进制数值(编码后以长度32 的字符串表示)作为主键。


“uuid.string”
与uuid.hex 类似,只是生成的主键未进行编码(长度16),不能应用在 PostgreSQL 数据库中。


“foreign”
使用另外一个相关联的对象的标识符作为主键。


以下举例:
1、指定参数的情况:
   
     
        SEQ_CHILD
     

使用的是sequence,适合oracle数据库;


2、对于sql server2000中的数据库子增字段,在配置文件使用下列方法实现:

    
    

这里主要是:identity:代表由sql server2000数据库自己提供子增字段.如果要hibernate自己提供,则用increment关键字来实现


3、如果表中的主键用字符串类型:可以用hibernate自己提供的方法实现主键唯一:
 
     
     
 
使用的是uuid.hex: 采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库。

 

 

关键字:   标识符    
1,increment
代理主键,由Hibernate自动以递增方式生成标识符,每次增量为1。
优点:不依赖于底层数据库系统,适用于所有的数据库系统。
缺点:只适用于单个Hibernate应用进程访问同一个数据库的场合,在集群环境下不推荐使用。

2,identity
代理主键,由底层数据库生成标识符。
前提条件:数据库支持自动增长字段类型。
数据库定义:MySql                     auto_increment
                      MS SQL Server     identity

3,sequence
代理主键,Hibernate根据底层数据库的序列来生成标识符。
前提条件:数据库支持序列。

4,hilo
代理主键,Hibernate根据high/low算法来生成标识符。
Hibernate把特定表的字段作为“high”值。在默认情况下选用hibernate_unique_key表的next_hi字段

5,native
代理主键,根据数据库自动识别类型,identity,sequence或hilo。
MySql和MS SQL Server :identity
oracle : sequence
优点:适用于跨数据库平台开发。

6,assigned
自然主键
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
SQL Java 数据库连接
hibernate 3 ID策略生成器自定义,可用于注释 - 规则: 九位业务编号 + 六位日期 + 六位自增长序列
/***hibernate ID策略生成器 自定义 -  规则: 业务编号 + 日期 + 六位自增长序列*/public class MyKeyGenerator implements IdentifierGenerator, Configurable {    private static final Log log = LogFactory.
608 0
|
安全 Java 应用服务中间件
Java 近期新闻:Hibernate 6.0、JobRunr 5.0、JHipster 7.8.0、Spring CVEs、JReleaser 1.0-RC2
本期 Java 近期新闻综述内容涉及 JDK 19、Spring Boot、Spring CVEs、Apache Tomcat 点版本、Quarkus Tools for Visual Studio Code、Micronaut 3.4.1、JetBrains 加入 Micronaut 基金会、Open Liberty Paketo Liberty Buildpack、Hibernate 6.0、JobRunr 5.0、WildFly 26.1 Beta S2I 镜像、JReleaser 1.0-RC2、MicroStream 7.0-M2、JHipster 7.8.0、JMH 1.35。
782 0
|
17天前
|
SQL Java 数据库连接
jpa、hibernate、spring-data-jpa、jdbcTemplate
jpa、hibernate、spring-data-jpa、jdbcTemplate
|
4月前
|
存储 Java 数据库连接
Spring Boot 嵌入式服务器、Hibernate 关系和 Spring Data 全解析
Spring Boot 的嵌入式服务器功能是一项方便而强大的功能,它允许你在应用程序中直接运行 Web 服务器,无需将其部署到单独的独立 Web 服务器中。这使得开发、测试和部署 Web 应用程序变得容易,而且它还是轻量级的、易于启动和停止的,易于配置。
67 0
|
4月前
|
XML Java 数据库连接
Hibernate与Spring整合实践实例
Hibernate与Spring整合实践实例
40 0
|
7月前
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
9月前
|
Java 数据库连接 数据库
JAVA三大框架Struts、hibernate和spring的各自作用是什么?
JAVA三大框架Struts、hibernate和spring的各自作用是什么?
48 0
|
XML Java 关系型数据库
Spring 项目快速整合 Hibernate
前言 Hibernate 作为前些年广为流行的 ORM 框架,Spring 在诞生之初也进行了支持,并且抽象出一个 spring-orm 模块。
426 0
|
JavaScript Java 数据库连接
spring对hibernate的集成中的回调(CallBack)机制
spring对hibernate的集成中的回调(CallBack)机制
166 0
spring对hibernate的集成中的回调(CallBack)机制
|
Java 数据库连接 API
Spring整合Hibernate JPA
Spring整合Hibernate JPA
79 0