`

Hibernate主键生成器可选项说明

阅读更多

主键产生器可选项说明:

1)  Assigned

主键由外部程序负责生成,无需Hibernate参与。
 
2)  hilo

通过 hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
 
3)  seqhilo

与 hilo 类似,通过 hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。
 
4)  increment

主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。 这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。
 
5)  identity

采用数据库提供的主键生成机制。如 DB2、SQL Server、MySQL中的主键生成机制。
 
6)  sequence

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

由Hibernate根据底层数据库自行判断采用 identity、hilo、sequence其中一种作为主键生成方式。
 
8)  uuid.hex

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

与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如 PostgreSQL)。
 
10) foreign

使用外部表的字段作为主键。
 
一般而言,利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性。

分享到:
评论

相关推荐

    hibernate的映射表生成器

    一个好用的映射表生成器应该也能在生成过程中考虑到这些优化选项。 9. **集成开发环境(IDE)支持**: 当今许多IDE,如Eclipse、IntelliJ IDEA,都有集成的Hibernate插件,能辅助完成映射文件的生成和数据库操作。这...

    hibernate自动生成

    自动生成的Entity类通常包含属性(对应表的字段)和getter/setter方法,有时还会包含一些特定的Hibernate注解,如@Id(主键)和@GeneratedValue(主键生成策略)。 2. **映射文件(Mapping Files)**:在传统的...

    hibernate注解说明文档

    - **用途**:用于声明 Hibernate 的主键生成策略,支持多种不同的策略。 - **属性**: - `name`:生成器名称。 - `strategy`:生成策略的类名。 - `parameters`:具体生成器所用到的参数。 - **策略**: - `...

    hibernate说明文档

    - **标识符**:配置实体的主键生成策略。 - **乐观锁定属性**:可选配置,用于实现并发控制。 - **属性**:定义实体类中的字段与数据库列之间的映射关系。 - **嵌入式对象**:将一个对象作为一个整体映射到另一...

    hibernate 配置 实体生成

    这里,`@Table(name = "users")`表示该实体类映射到名为`users`的数据库表,`@Id`标识主键字段,`@GeneratedValue`定义主键生成策略。 3. 自动实体生成: 在MyEclipse等集成开发环境中,可以通过插件或内置工具...

    ssh2(struts2+spring2.5+hibernate3.3)自动代码生成器程序

    要使用这个工具,开发者首先需要解压文件,然后按照说明配置相关的参数,运行代码生成器,最后将生成的代码整合到自己的SSH2项目中。通过这种方式,开发者可以更专注于业务逻辑的实现,而不用在基础架构上花费太多...

    代码生成器源代码

    代码生成器是一种软件开发工具,它能够自动化地根据数据库结构生成相应的编程代码,极大地提高了开发效率,降低了出错的可能性。这个“代码生成器源代码”是实现这一功能的具体实现,让我们来深入了解一下这个工具...

    用MyEclipse自动生成hibernate映射文件和实体类

    默认情况下,Hibernate可能会选择自动增长策略,但根据实际需求,可能需要使用`assigned`策略,即主键由应用逻辑生成,例如使用序列或自定义ID生成器。修改后的配置如下: ```xml ``` 这段配置表示主键...

    java实体类代码生成器 带注释

    生成器可以根据数据库表的结构自动生成这些类,包括主键、外键、非空约束等信息。这使得开发者可以快速地构建数据模型,而无需手动编写大量的基础代码。 使用代码生成器的好处包括: 1. 提高效率:开发者无需手动...

    hibernate-mapping参数详解

    7. `key-generator`:主键生成器,用于定义如何生成数据库主键。常见的选项有: - `assigned`:主键由应用程序自己生成。 - `hilo`、`seqhilo`:基于hi/lo算法,适用于需要高效主键生成的场景。 - `increment`:...

    j2ee代码生成器源代码

    **J2EE代码生成器源代码详解** J2EE代码生成器是一种强大的开发工具,它能够自动生成符合J2EE规范的源代码,极大地提高了开发效率,减少了手动编写重复代码的工作量。通过理解和掌握这种工具的源代码,开发者可以更...

    实体生成器、可提取公共母类

    实体生成器是一种软件工具,主要用于自动化创建数据模型的实体类,这些实体类通常在Java、C#等面向对象编程语言中使用,与数据库中的表结构相对应。这种工具极大地简化了开发过程,避免了手动编写繁琐的代码,提高了...

    Nhibernate代码生成器

    此外,了解如何使用像`OrmCodeGenerator2.0`这样的特定代码生成器也至关重要,因为每个工具都有其特有的设置和选项。 总的来说,Nhibernate代码生成器是Nhibernate开发中的得力助手,它通过自动化代码生成流程,...

    Hibernate_5.2.11_Final

    5. SQL优化:提供了更多的SQL生成选项,包括自定义SQL生成器,使得开发者可以根据具体数据库进行优化。 三、Hibernate配置与使用 在项目中引入Hibernate,首先需要在pom.xml或build.gradle文件中添加依赖。接着,...

    Hibernate4.1.1中文PDF版

    例如,`@Entity`标识一个类为数据库表,`@Table`指定对应的表名,`@Id`定义主键,`@GeneratedValue`定义主键生成策略,还有`@Column`、`@OneToMany`、`@ManyToOne`、`@OneToOne`等用于描述字段和关系。 5. **配置...

    Hibernate4

    - 持久化类需遵循一定的约定,例如提供无参数构造器、标识属性(主键)、get/set 方法等。 - 类本身不应是 final 类型,以便 Hibernate 可以为其生成代理。 - 必要时,还需要重写 `equals` 和 `hashCode` 方法以...

    Hibernate学习.pdf

    - **GENERATOR**: 主键生成策略。 - **COMPOSITE-ID**: 复合主键。 - **PROPERTY**: 映射到数据库表的字段。 #### 6. 关联关系映射 - **单向关联(UNIDIRECTIONAL ASSOCIATIONS)**: - **多对一(many-to-one)**: ...

    hibernate教程

    - 主键生成策略:通过`@Id`和`@GeneratedValue`来定义。 - **映射继承关系**: - 每个类一张表:使用`@Inheritance(strategy = InheritanceType.SINGLE_TABLE)`。 - 每个类层次结构一张表:使用`@Inheritance...

Global site tag (gtag.js) - Google Analytics