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

hibernate 主键生成策略

阅读更多
本文参考自:http://blog.sina.com.cn/s/blog_4979ec3e010170u8.html

1.identity 
主要是获取数据库主键的值然后自增。MS SQL Server mysql主要用identity实现。

2.sequence  
Oracle DB2和PostgreSQL通过创建一个序列(sequence),然后hibernate同该序列来获取当前主键值,来为持久化对象属性值赋予标识符属性值。此为sequence的生成策略。用其生成的标识符属性的类型可以是long、short、int及其封装类的类型。

3.uuid
主要是用于多数据库的,便于移植项目分布式开发,由于uuid生成策略是采用128位的UUID的算法,通过系统时间,JVM的启动时间,计算器的时间和ip地址经过计算得出的一个32为的字符串,所以它占用的数据库比较大,如果实在实践开发中建议用这个,它的类型对应的是String

4.native 
可以在支持的情况下任选一个生成策略,选择的范围是:identity  sequence   Oracle使用这种标识符属性生成策略可以根据不同的数据库采用不同的生成策略,如Oracle中使用sequence,在MySQL中使用identity便于Hibernate应用在不同的数据库之间移植。

5.hilo
采用高/低位算法实现的生成策略,用hilo必须数据库中多件一个表和一个字段,字段的类型用long、short、int及其封装类的类型。
这种标识符属性生成策略需要额外的数据库表和字段的支持,可保证为特定数据库生成唯一的标识符属性。并且这种策略与底层使用的数据库无关,可以跨数据库使用。

6seqhilo
这个是在sequence的基础上采用hilo的算法实现的。它通过去sequence的值来充当hilo算法中的高位来计算得出主键的标识符属性值,产生的标识符属性值为long、short、int及其封装类的类型。

7.assigned
assigned生成策略由Hibernate应用自定义标识符属性的数值,即在调用Session对象的save()方法持久化对象时,需要首先为持久化对象的标识符属性赋值。

8foreign
foreign生成策略通过关联的持久化对象为当前持久化对象设置标识符属性值,当处理持久化类一对一关联时,一个持久化类的标识符属性值可以参考关联持久化类的标识符属性值获取。
例如,User类和Profile类标识符属性都是id,二者是一对一的关联关系。可以设置Profile类的标识符属性值通过User类的标识符属性获取,Profile.hbm.xml文件中关于标识符属性的设置信息如下:
<id name="id" type="java.lang.Integer" column="ID" > <generator class="foreign"> <param name="property">user</param> </generator> </id>

9.guid
这种标识符属性生成策略借助MS SQL Server或者MySQL数据库中的GUID字符串产生标识符属性值。如果使用MS SQL Server数据库,表中需要把标识符属性对应的字段类型设置为"uniqueidentifier"。其示例配置信息如下:
<id name="id" type="java.lang.String" column="ID"> <generator class="guid"> </generator> </id>

10.increatement
在hibernate要给数据库插入一条记录时,首先是通过取出数据表中的主键id的最大值,然后在其基础上累加1然后给标识符赋值来生成。生成的标识符属性的值的类型为long int short类型。
这中生成策略只能是在单服务器非共享数据库,或者是只在这个hibernate的应用中才能使用,否则不能保证标识符的唯一性。不能在非独享数据库或者分布式hibernate中用。
分享到:
评论

相关推荐

    hibernate主键生成策略

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

    Hibernate主键生成策略

    ### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表中的记录,从而极大地简化了数据访问层的开发工作。在 Hibernate 中,...

    常用Hibernate主键生成策略

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

    Hibernate主键生成策略.doc

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

    hibernate主键生成策略详解

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

    Hibernate中主键生成策略

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

    Hibernate主键生成策略.docx

    ### Hibernate 主键生成策略详解 #### 一、概述 Hibernate 是一种流行的 Java 持久化框架,它简化了数据库操作,并提供了多种主键生成策略。主键是表中的一个或多个字段组合,用于唯一标识表中的每一条记录。...

    Hibernate各种主键生成策略

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

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

    ### Hibernate 主键生成策略与配置详解 #### 一、概述 在使用Hibernate进行持久化操作时,合理选择和配置主键生成策略对于确保数据的一致性和优化性能至关重要。本文将详细介绍几种常见的主键生成策略,并结合示例...

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

    Hibernate主键生成策略详细介绍 在Java探索中,Hibernate提供了多种主键生成策略,满足不同场景下的需求。下面是对Hibernate主键生成策略的详细介绍: 1. Increment主键生成策略 Increment主键生成策略是由...

    持久化类主键生成策略+例子

    ### Hibernate主键生成策略 1. **`native`**:类似于JPA的`GenerationType.AUTO`,根据底层数据库选择合适的生成策略。 2. **`identity`**:相当于JPA的`GenerationType.IDENTITY`,适合自动增长主键的数据库。 3...

    hibernate的主键生成策略

    以下是对Hibernate主键生成策略的详细说明: 1. **assigned**: 这种策略要求用户在调用`save()`方法之前手动设置主键值。Hibernate不参与主键的生成,这意味着主键生成完全由应用控制,可以与数据库无关。这种...

Global site tag (gtag.js) - Google Analytics