1,Assigned,主键的生成值完全由用户决定,与底层的数据库无关。用户需要维护主键值。要在调用session.save()前指定主键值。
2,Hilo,它其实是通过一种叫做hi/lo的算法来实现的主键生成机制。这种算法通常叫做高第位算法,Hi代表一个高位值,lo代表一个低位值,然后吧算法得到的两个值拼接起来作为数据库中的唯一主键。但这种方式需要额外的数据库表和字段,提高高位值来源。默认情况下这个表叫做hibernate_unique_key,默认字段叫做next_hi。并且必须保证next_hi字段有且只有一条记录。这种方式能保证同一个数据库中主键的唯一性,但不能保证多个数据库之间主键的唯一性。它与底层数据库无关。
3,Seqhilo,使用方法与Hilo方式类似,但要求底层数据库支持Sequence,入Oracle,DB2等。
4,Increment,它由Hibernate本身维护,适用于所有的数据库。但是它不适合多进程并发更新数据库,适合单一进程访问数据库,不能用于群集环境。
5,Identity,与底层数据库有关,要求数据库支持Identity,入MySQL中是auto_increment,SQLServer中是Identity。支持的数据库有MySQL,SQLServer,DB2,Sybase和HypersoncSQL。无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。
6,Sequence,需要底层数据库支持序列,支持序列的数据库有DB2,Oracle,PostgreSQL,SAPDB等。在不同的数据库之间移植程序,特别从支持序列的数据库移植到不支持序列的数据库时需要修改配置文件。
7,Native,根据不同的底层数据库,采用不同的主键生成方式。入MySQL使用Identity方式,Oracle使用Sequence方式。由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植。项目中如果用到多个数据库时,可以使用Native方式。
8,UUID,能够保证数据库中主键的唯一性。生成的主键值占用比较多的存储空间。
9,Foreign,适合一对一关联关系中。
10,GUID,主键生成方式使用一种特殊的算法,保证主键的唯一性,支持SQLServer和MySQL。在使用SQLServer时,表定义中需要将字段的类型指定为“uniqueidentifier”。
以上就是Hibernate的十种主键生成方式,各有其特点,具体的采用那种方式还是的根据实际的应用,合理采用。
分享到:
相关推荐
根据提供的文件信息,“精通Hibernate3.0—Java数据库持久层开发实践(付京周)”这一书籍主要聚焦于使用Hibernate框架进行Java应用的数据库持久层开发。本书旨在帮助读者深入理解并掌握Hibernate的核心概念和技术...
### HIBERNATE - 符合Java习惯的关系数据库持久化:深入解析与实践 #### 一、概述 Hibernate是Java领域内最受欢迎的对象关系映射(ORM)框架之一,它简化了Java应用程序与关系型数据库之间的交互,使得开发人员...
### EJB_JPA数据库持久层开发详解 #### JPA与数据持久化技术 **数据持久化**是指将程序运行时的数据保存到永久存储设备中,以便在下次运行时能够读取和使用这些数据。在Java领域,有多种数据持久化技术,包括序列...
**EJB_JPA数据库持久层开发详解** **一、JPA概述** JPA(Java Persistence API)是Java平台上的一个标准,它为Java应用程序提供了一种对象/关系映射工具来管理Java应用中的关系数据。数据持久化是将程序中的对象...
通过阅读《Java持久层框架之Hibernate》这本书,开发者不仅可以掌握Hibernate的基本使用方法,还能了解到其内在的工作原理,从而更好地适应各种复杂的数据库应用场景。不论你是初学者还是经验丰富的开发者,这本书都...
《Hibernate执行持久层访问步骤详解...以上就是Hibernate执行持久层访问的基本步骤,掌握这些知识点,能帮助开发者高效地进行数据库操作。在实际开发中,还需要结合具体业务需求灵活运用,不断优化代码,提升系统性能。
Hibernate 是一款开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。在 Hibernate 中,主键生成策略是一个重要的概念,用于指定如何为持久...
【hibernate主键生成策略】是Hibernate框架中用于生成持久化对象主键的重要机制,它决定了如何在数据库中创建唯一的标识符。在SSH(Spring、Struts、Hibernate)架构中,Hibernate作为持久层框架,主键生成策略的...
Hibernate作为一款优秀的持久层框架,提供了多种主键生成策略来简化这一过程。本文将详细介绍Hibernate提供的几种常见的主键生成策略,包括assigned、increment、identity以及native等,并探讨它们各自的适用场景及...
在ORM(对象关系映射)技术中,Hibernate作为一款流行的Java持久层框架,在处理数据持久化方面提供了丰富的功能和灵活性。其中,主键生成策略是Hibernate配置中的一个重要部分,它决定了表中的主键值如何生成。本文...
**Hibernate:符合JAVA习惯的关系数据库持久化** Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了Java应用程序与关系数据库之间的交互。通过提供一套API和元数据描述,Hibernate能够将Java类与...
在现代软件开发过程中,数据库持久层作为连接业务逻辑层与底层数据存储的重要桥梁,其设计的重要性不言而喻。良好的持久层设计不仅能提高应用程序的性能和可维护性,还能显著减少未来可能遇到的技术债务。本文旨在...
Hibernate 是一款开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表及其字段,简化了持久化层的开发工作。在 Hibernate 中,主键生成策略是一个重要的配置项,用于指定如何为实体类中的主键...
Hibernate 是一款流行的 Java 持久层框架,它提供了对象关系映射(ORM)的功能,使得 Java 开发者能够更高效地与数据库进行交互。在 Hibernate 中,主键生成策略是一项核心功能,用于确定如何为持久化实体生成唯一的...
在基于持久层框架的DAO(Data Access Object)模式应用中,Hibernate扮演着核心角色,使得业务逻辑和数据访问逻辑分离,提高了代码的可复用性和可维护性。 1. **DAO模式的理解** DAO模式是一种设计模式,它创建了...
在IT行业中,开发持久层是构建企业级应用的关键部分,它负责管理应用程序与数据库之间的交互。Hibernate和Spring是两个非常流行的Java框架,它们在持久层开发中扮演着重要角色。本教程将深入探讨如何结合使用...
Hibernate 是一款开源的Java语言实现的数据持久层框架,它为Java开发者提供了一种对象-关系映射(ORM)工具,使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据库操作的复杂性。在Java后端开发中,...
Hibernate作为一款流行的Java持久层框架,提供了多种自动生成主键的方法,以适应不同场景的需求。本文将深入探讨Hibernate中自动生成主键的几种常见策略及其应用场景。 ### 1. UUID.hex UUID(Universally Unique ...
5. **Hibernate主键生成器(数值型主键操作方法)** - Hibernate提供了多种主键生成策略,如`Identity`, `Sequence`, `Table`, `Auto`等。对于数值型主键,应根据目标数据库的特性选择合适的生成策略。例如,Oracle...