`
lfq618
  • 浏览: 88488 次
  • 性别: 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的注解功能,通过实体类自动生成数据库中的表。这极大...

    struts\Hibernate 学习总结.doc

    1. Hibernate产生的原因:Hibernate的出现主要是为了解决JDBC编程中的一些问题,如代码和SQL混杂,不利于维护;SQL语句使得程序失去面向对象的特性;数据模型变化需要手动修改大量SQL;以及SQL错误在编译时无法检查...

    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支持懒加载机制,即关联对象不会在实体加载时立即加载,而是在第一次访问...

    Hibernate_学习总结

    #### 一、Hibernate产生的背景及优势 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