`
songbin0201
  • 浏览: 323261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate 内置标识符策略整理

 
阅读更多
hibernate 提供了多种生成标志符的策略,一般这种标识符多会被用来作为数据表的主键。


比较常用的有:increment、sequence、identity、native、hilo
1、increment
       适用于代理主键,由hibernate以递增的方式生成标识符,例如save(table_name),采用increment方式,hibernate在持久化table_name对象时,同时会采用select max(id) from table_name的方式得到标识符。
       显而易见的好处:不依赖底层数据库的选择,并且有hibernate自动提供主键标识符的生成,无需程序的干预。
       显而易见的坏处:如果同时进行多个持久化操作一个数据表中,会发生主键冲突的异常,因此不适用于分布式系统、不适用非线程安全性的持久化操作。
2、sequence
      适用于代理主键,应该是比较常用的一种方式,缺点是对每个数据表的持久化操作,都得为其分配一个名称唯一的sequence,对数据库的依赖较大,但是也是最保险的一种方式,由数据库去保证主键的唯一性,并且不会冲突。
3、indentity
      适用于代理主键,这种标识符策略需要底层数据库的支持,支持字段类型可以设置为自增。目前支持自增字段类型的数据库包括:DB2、MySQL、MS SQL Server、Sybase、HSQLDB、Informix;因此这种策略对于oracle数据库是不适用的。
4、native
      适用于代理主键,根据数据库对自动标识符的支持能力,选择使用identity OR sequence OR hilo。
      MySQL、MS SQL Server采用identity策略;
      oracle使用sequence策略,因此需要手动建立一个全局hibernate_sequence,所有的标识符从这个序列中获取。
5、hilo
      适用于代理主键,hibernate使用high/low算法生成标识符,使用hilo策略时需要建立特定表和特定字段,用来维护high值,hibernate每次获取标识符,会读取并修改特定表中的特定字段。


不推荐使用的有:
1、uuid.hex
       适用于代理主键,hibernate使用uuid算法生成全网络唯一的字串标识符,但如果用这种标识符做主键,与整数类型相比即不方便与排序,同时也占用较大的存储空间。
2、assigned
       适用于自然主键,assigned使用Java程序生成的标识符,由java程序负责主键标识符的生成和维护,无法保证其唯一性。
分享到:
评论

相关推荐

    Hibernate内置标识符生成器

    Hibernate 提供了多种内置的标识符生成策略,以适应不同的数据库系统和应用场景。 1. Increment 标识符生成器:这种生成器适用于逻辑主键,它在 Hibernate 初始化时获取表中最大 ID,然后在插入新记录时递增。但...

    常用Hibernate主键生成策略

    ### 常用Hibernate主键生成策略详解 #### 一、引言 在数据库设计与操作过程中,主键是确保数据唯一性的关键要素之一。在实际应用中,开发者经常需要处理不同类型的数据库,并且需要应对各种不同的主键生成需求。...

    hibernate主键生成策略

    ### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它极大地简化了 Java 应用程序与数据库之间的交互过程。在使用 Hibernate 进行持久化操作时,经常需要处理实体类...

    Hibernate主键生成策略

    在 Hibernate 中,主键生成策略是一个重要的概念,用于指定如何为持久化对象生成唯一的标识符(即主键)。合理的主键生成策略不仅能提高应用程序的性能,还能确保数据的一致性和完整性。 #### 二、主键生成策略分类...

    Hibernate各种主键生成策略与配置详解

    关于Hibernate的各种主键生成策略与配置详解

    Hibernate中主键生成策略

    在Java的持久化框架Hibernate中,主键生成策略是一个至关重要的概念,它决定了数据库表中主键值如何自动生成。主键通常是表中唯一标识记录的一列,对于数据的完整性和一致性至关重要。以下是对Hibernate中主键生成...

    Hibernate教程02_ID生成策略

    在Java的持久化框架Hibernate中,ID生成策略是至关重要的一个环节。它是用来唯一标识数据库中每一行记录的关键部分。本教程将详细讲解Hibernate中的ID生成策略,以及如何在实际项目中灵活应用。 首先,ID生成策略是...

    Hibernate的缓存策略

    ### Hibernate的缓存策略 #### 一、缓存的基本概念 缓存技术是现代软件架构设计中的重要组成部分,尤其在数据库交互频繁的应用场景下尤为重要。简单来说,缓存是一种存储技术,位于应用程序与物理数据之间,目的是...

    HIBERNATE检索策略

    标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...

    hibernate 主键生成策略

    在 Hibernate 中,主键生成策略是一项核心功能,用于确定如何为持久化实体生成唯一的标识符。以下是 Hibernate 支持的主要主键生成策略的详细解析: #### 1. Native - **描述**:此策略根据所使用的数据库类型自动...

    Hibernate各种主键生成策略

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

    Hibernate学习笔记整理

    Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...

    hibernate主键生成策略详解

    ### hibernate主键生成策略详解 #### 一、assigned **assigned** 主键生成策略意味着主键的值是由外部程序负责生成的,并且在执行 `save()` 方法之前必须明确指定一个值。在这种策略下,Hibernate 不参与主键的...

    Hibernate主键生成策略.doc

    Hibernate主键生成策略.docHibernate主键生成策略.doc

    hibernate的lazy策略forClass

    在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的对象关系映射策略,用于提高应用程序的性能。懒加载的基本思想是延迟加载,即当真正需要数据时,才去数据库加载。在这个场景中,我们关注的是...

Global site tag (gtag.js) - Google Analytics