`

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

阅读更多
<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.mypro.id">
    <class name="User" table="user">
        <id name="id" column="Id" type="int">
            <generator class="navite"></generator>
        </id>
        <property name="name" column="name" type="string"></property>
    </class>
</hibernate-mapping>


通过配置可以看到,我们有个实体类User,该类有一个id和name的属性与数据库中user表的id和name字段分别对应。其中

<generator class="navite"></generator>

定义了主键的生成方式,下面我们将会介绍到我们常用的主键生成方式

1、assigned
主键由外部程序负责生成,在 save() 之前必须指定一个,Hibernate不负责维护主键生成。也就是可以每次指定主键。该方式不推荐



2、increment
这种方式在每次插入前,需要通过“select max(主键) from 表名 ”这种方式先查询最大ID,然后通过ID+1来作为新的主键值。这种方式也不推荐,因为这样会出现线程安全问题。



3、identity
identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。



4、sequence
采用数据库提供的sequence机制生成主键,需要数据库支持sequence。如oralce、DB、SAP DB、PostgerSQL、McKoi中的sequence。MySQL这种不支持sequence的数据库则不行



5、hilo
hilo(高低位方式high low)是hibernate中最常用的一种生成方式,需要一张额外的表保存hi的值。保存hi值的表至少有一条记录(只与第一条记录有关),否则会出现错误。可以跨数据库。



6、native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。



7、uuid
UUID:Universally Unique Identifier,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,标准的UUID格式为:

xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)
分享到:
评论

相关推荐

    Hibernate主键生成策略

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

    hibernate映射主键生成策略native

    其中,主键生成策略是Hibernate配置中的一个重要部分,它决定了表中的主键值如何生成。本文将重点介绍在Oracle数据库环境下,使用Hibernate的“native”策略来生成主键的具体方法及注意事项。 #### 二、主键生成...

    hibernate主键生成策略

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

    hibernate主键生成策略详解

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

    常用Hibernate主键生成策略

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

    Hibernate的主键生成策略

    ### Hibernate的主键生成策略详解 #### 一、概述 在使用Hibernate进行持久化操作时,主键生成策略的选择对于数据库性能及应用架构至关重要。本文将详细介绍Hibernate中五种常用的主键生成策略:assigned、...

    Hibernate主键生成策略.docx

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

    hibernate映射文件--主键生成策略[参考].pdf

    Hibernate映射文件主键生成策略详解 Hibernate.cfg.xml配置文件是Hibernate框架中的一部分,该文件用于配置Hibernate的各种设置,例如数据库连接、dialect、mapping文件等。在这个文件中,我们可以看到hibernate-...

    04_JPA详解_第一个JPA实例与JPA主键生成策略.zip

    本压缩包文件"04_JPA详解_第一个JPA实例与JPA主键生成策略.zip"包含了关于如何在实际项目中运用JPA,以及理解JPA主键生成策略的详细教程。 ### JPA基础 1. **JPA简介**: JPA是Java EE的一部分,它提供了一套规范,...

    Hibernate主键生成方式

    ### Hibernate主键生成方式详解 #### 一、概述 Hibernate 是一款开源的对象关系映射 (ORM) 框架,它允许开发人员将 Java 对象映射到数据库表及其字段,简化了持久化层的开发工作。在 Hibernate 中,主键生成策略是...

    JPA学习笔记-EJB-03JPA主键生成策略总结

    ### JPA主键生成策略详解 #### 一、概述 持久化对象的主键生成机制在JPA(Java Persistence API)中占据着重要的位置。它不仅关乎数据的唯一标识符如何确定,还与数据的存储效率及应用逻辑紧密相关。JPA通过`@...

    hibernate。hbm.xml配置详解

    此外,还可以自定义主键生成策略,通过扩展 Hibernate 类来实现特定需求。 ### 5. 参考资料 对于更详细的配置信息,开发者可以查阅 Hibernate 提供的 DTD 文档,例如: - Hibernate 3.0 DTD: ...

    hibernate各种主健详解

    通过对以上几种Hibernate主键生成策略的介绍与分析,我们可以看出每种策略都有其独特的适用场景和优缺点。在实际开发过程中,应根据具体需求和技术栈来合理选择主键生成策略,以达到最佳的数据处理效果。此外,随着...

    hibernate注解配置详解

    ### Hibernate注解配置详解 #### 一、概述 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。在Hibernate中,通过使用注解来定义实体类与数据库表之间的映射关系,...

    Hibernate映射配置详解

    映射文件定义了类的属性与数据库字段的对应关系,以及主键生成策略等。例如: ```xml &lt;!-- 更多属性映射... --&gt; ``` 四、注解映射 除了XML映射,Hibernate还支持使用Java注解进行映射。这样可以将...

Global site tag (gtag.js) - Google Analytics