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

hibernate产生主键的方法

阅读更多
主键产生器 说明
Assigned 主键由外部程序负责生成,无须Hibernate参与
hilo 通过hilo算法实现的主键生成机制,需要额外的数据库表保存主键生成历史
seqhilo

与hilo类似,通过hilo算法实现的主键生成机制,只是将主键历史状态保存在Sequence中,

适用于支持Sequence的数据库,如Oracle

increment 主键按数值顺序递增,此方法的实现机制为在当前应用实例中的维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键,这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成相同的主键,从而造成主键重复异常, 因此,如果同一数据库中有多个实例访问,此方式必须避免适用。
identity 采用数据库提供的主键生成机制,如DB2,SQL SERVER, MYSQL中的主键生成机制
sequence 采用数据库提供的Sequence机制生成主键,如Oracle中的Sequence
native 由Hibernate根据底层数据库自行判断采用identity,hilo, sequence其中一种作为主键生成机制
uuid.hex 由Hibernate基于128位唯一值产生算法生成十六进制数值,(编码后以长度为32的字符串表示)作为主键
uuid.string 与uuid.hex类似,只是生成 的主键未进行编码(长度16)。在某些数据库中可能出现问题,如PostgreSQL
foreign 使用外部表的字段作为主键
分享到:
评论

相关推荐

    Hibernate中主键生成策略

    不适用于多线程或多服务器环境,因为可能产生主键冲突。使用`<generator class="increment">`或`@GeneratedValue(strategy = GenerationType.INCREMENT)`。 8. **Assigned策略**: 主键值由应用程序手动设置,...

    hibernate主键冲突问题

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

    Hibernate主键生成方式

    - **定义**:由 Hibernate 基于 128 位唯一值产生算法生成 16 进制数值(编码后以长度 32 的字符串表示)作为主键。 - **应用场景**:适合需要跨平台且具有高度唯一性的场景。由于其生成的主键是全局唯一的,因此...

    Java探索之Hibernate主键生成策略详细介绍

    这种策略可以跨数据库,但它有一个缺点,即在多进程并发更新数据库时,可能会产生主键冲突。因此,它适合单一进程访问数据库,不能用于群集环境。 例子:<id name="id" column="id"><generator class="increment" /...

    sql主键产生器

    6. **第三方库**:在编程语言层面,有许多库和框架提供了主键生成的功能,如Java的Hibernate或Spring框架,它们可以与数据库交互,自动处理主键生成。 使用"SQL主键产生器"工具的优点在于,它可以帮助开发者避免...

    Hibernate学习笔记整理

    主键的产生器 * Increment:查找主键的最大值,在最大值的基础上加 1 * Assigned:由程序手动赋值 * Identity:支持主键自动增长 * Uuid:持久化类中的属性必须是 String 类型 * Native:Hibernate 会根据数据库的...

    Hibernate_Tools_for_eclipse_HbmTool.rar

    下面将介绍如何使用Hibernate Code Generation来产生数据库表映射Java对象,首先要在数据库中创建表,并设置号字段名和主键(主键很重要,关于主键的选择建议你使用与业务无关的ID作为主键);打开Hibernate视图找到...

    Hibernate自动生成表demo

    在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式处理数据库操作。在本教程中,我们将探讨如何利用Hibernate的注解功能,通过实体类自动生成数据库中的表。这极大...

    Hibernate实体层设计

    2. 自动SQL生成:根据实体的定义,Hibernate自动产生相应的SQL语句,减少了手动编写SQL的工作量。 3. 支持缓存:Hibernate内置了二级缓存机制,能有效提高系统性能。 4. 数据库无关性:Hibernate的配置文件可以...

    hibernate笔记

    简而言之,就是在程序运行过程中产生的数据如何能够长期保存下来,以便将来可以再次访问。 - **瞬时状态**:是指那些仅存在于内存中的数据,当程序结束或系统关闭时,这些数据就会丢失。例如,Java中通过`new`...

    Hibernate中文API大全

    依赖对象(Dependent objects) 组件(Component)是一个被包含的...比如,OrderLine类具有一个主键,这个主键依赖于Order的(联合)主键。 insert="false" update="false"> .... </class>

    HIBERNATE符合Java习惯的关系数据库持久化

    HQL支持各种查询操作,包括选择、投影、聚合、关联等,可以避免因数据库特定语法而产生的兼容性问题。 7. **懒加载和级联操作**:Hibernate支持懒加载机制,即关联对象不会在实体加载时立即加载,而是在第一次访问...

    hibernate3.2 源码

    这个压缩包包含的是Hibernate 3.2版本的源代码,这是一个非常重要的里程碑,因为它在当时引入了许多改进和新特性,对Java社区产生了深远的影响。 在Hibernate 3.2中,有几个关键的知识点值得一提: 1. **对象关系...

    hibernate环境搭建

    这些库通常包含在JAR文件中,其中日志类的JAR包是必不可少的,因为Hibernate在运行时会产生大量的日志信息,这对于调试和性能分析至关重要。常见的日志库有Log4j、SLF4J或Java内置的日志API。在你的项目中,你需要...

    Hibernate映射导致的几个异常

    标题与描述概述的知识点主要集中在Hibernate映射过程中可能遇到的各种异常情况,这涉及到数据库与对象模型之间的映射问题,以及Hibernate框架在处理这些映射时可能产生的错误。下面将对这些异常进行详细的解释和分析...

    hibernate 4教程

    为了让开发者能够看到Hibernate在运行时产生的SQL语句,通常需要设置show_sql为true。而hibernate.hbm2ddl.auto属性设置为update,这表示Hibernate会根据实体类自动创建和更新数据库表结构。 创建实体类是ORM框架中...

    hibernate.cfg.xml中配置信息详解

    Hibernate.cfg.xml 配置信息详解 Hibernate.cfg.xml 是 Hibernate 框架中...Hibernate.cfg.xml 文件中的配置属性对 Hibernate 的行为和性能产生了重要的影响。正确地配置这些属性可以提高 Hibernate 的性能和稳定性。

    hibernate api+hibernate文档/chm格式

    4. Entity:代表数据库表的实体类,通过注解@Entity声明,其中的属性对应数据库字段,@Id标识主键。 5. Mappings:使用XML或注解方式定义对象和表之间的映射关系,如@Table、@Column等。 二、Hibernate 文档 官方...

Global site tag (gtag.js) - Google Analytics