[折叠]
eg:
<id name="id" type="interger">
<column name="id">
<generator class="identity"/>
</id>
1 increment:
当向数据库中插入新的纪录时,主键会自动增长1。increment主键生成方式的特点是与底层数据库无关性,大部分数据库如 Mysql
,MSSQL 和ORACLE等都支持increament生成方式。increment方式的不足之处是当多个线程并发对数据库表进行写操作时,可能出现
相同的主键值,发生主键重复的冲突,因此多线程并发操作时,不应该使用此方法
2 identity:
使用数据库提供的主键生成机制,自动为主键赋值,indentity方式的特点是与底层数据库无关性,不便于不同数据库之间的移植。
identity的优点是不会发生 increment方式的并发错做问题。
3 native:
由hibernate根据不同的数据库方言,自动选择不同的主键生成方式,native的优点是与底层性无关,便于不同数据库之间的移植,
由hibernate根据不同数据库选择主键的生成方式
4 uuid.hex:
采用基于128位的算法生成唯一值,并编制成32位长度的唯一字符串作为主键值,uuid.hex的优点是支持大部分数据库,缺点就是要
占用较大的存储空间。
5 uuid.string
使用UUID算法,UUID被编码为一个16个字符长的任意ASCII字符组成的字符串。不能再PostgreSQL数据库中使用。uuid.string同
uuid.hex类似,需要占很大的存储空间。
6 hilo:
通过一定的算法生成主键,需要一个表来保存额外的主键信息。这样生成的标识符只在特定的数据库是唯一的,在使用JTA(Java分
布式事务) 获得链接或用户自定义提供的链接中,不要使用这种生成器。hilo方式需要维护表信息,因此对数据的影响的要率会造
成一定影响。
7 sequence:
在ORACLE等数据库中使用sequence生成主键。sequence的特点是于数据库的相关性,seqhio要求底层能支持sequence,列如Oracle
。
8 seqhio:
通过一定的算法来生成主键,采用给定的数据库的sqlsequence开生成外键。ceqhio方式的特点外还具有Hil哦的大。
分享到:
相关推荐
以下是关于Hibernate主键生成方式的详细说明: 1. **Identity方式**:`<generator class="identity"/>` 这种方式依赖于数据库自身的自动增长机制。例如,在MySQL中,它可以与`AUTO_INCREMENT`属性配合使用。当...
本教程“08_ibatis教程_sql主键生成方式”聚焦于Ibatis如何处理数据库主键的生成策略,这对于理解和优化数据库操作至关重要。 Ibatis允许开发者自定义SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动...
MySQL中的GUID(Globally Unique Identifier)主键生成方式是一种确保数据库中每一条记录具有唯一标识的方法,尤其在分布式系统中十分常见。本示例主要介绍如何通过Hibernate框架配置,来实现MySQL数据库中GUID主键...
而Hibernate提供了跨数据库的主键生成策略,例如`native`策略,它会根据底层数据库自动选择合适的主键生成方式(如MySQL的自动增长ID或Oracle的序列)。 在JPA中,通过`@GenericGenerator`注解可以定义主键的生成...
本教程聚焦于Ibatis中的一个关键概念:SQL主键生成方式。主键是数据库表中用于唯一标识一条记录的字段,它的正确设置对数据完整性和一致性至关重要。下面我们将详细探讨Ibatis如何处理SQL主键的生成。 首先,了解...
### Hibernate的主键生成方式详解 #### 一、概述 在使用Hibernate进行对象关系映射时,一个重要的概念就是如何为持久化实体类中的主键字段生成唯一标识符。主键是表中的一列或一组列,其值是唯一的,用于唯一地...
本教程“08_传智播客ibatis教程_sql主键生成方式”主要聚焦于如何在Ibatis中处理SQL查询时的主键生成策略,这对于确保数据的一致性和完整性至关重要。 Ibatis允许开发者自定义SQL语句,包括插入、更新、删除和查询...
本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。
- **描述**:对于不同的数据库,`native` 策略会采用不同的主键生成方式。例如,在 Oracle 数据库中使用 Sequence 方式;而对于 MySQL 和 SQL Server,则采用 `identity` 方式(即自增字段)。 - **优点**:灵活性...
一种优化的主键生成方式,使用较小的整数范围(高位数)和数据库表中的行(低位数)来生成主键,减少对数据库的访问。使用`<generator class="hilo">`。 理解并正确选择主键生成策略对于优化数据库性能、保证数据...
- **简介**:`native` 策略根据使用的数据库类型自动选择合适的主键生成方式。 - **应用场景**: - 对于 Oracle 数据库,采用 `Sequence` 方式生成主键。 - 对于 MySQL 和 SQL Server 数据库,则采用 `Identity` ...
当使用该策略时,JPA会根据后端数据库的不同特性自动选择合适的主键生成方式。例如,在MySQL中,如果表的主键是自增字段,则使用数据库自身的自增功能;而在Oracle中,则会使用序列(sequence)机制。 - **示例代码*...
这是一种智能选择策略,根据底层数据库的特性自动选择合适的主键生成方式。在注解中常用`@GeneratedValue(strategy = GenerationType.AUTO)`。 7. **-native策略**: 类似于Auto,但会更加灵活,如果数据库支持...
刚学习JAVA,所以找了点资料给以后新学的朋友方便
1. **`GenerationType.AUTO`**:这是最常用的策略,具体的生成方式由数据库供应商决定,通常对应于自动增长字段,例如在MySQL中的`AUTO_INCREMENT`。 2. **`GenerationType.IDENTITY`**:此策略适用于支持自动递增...
以下是Hibernate中常见的主键生成方式及其特点: 1. **increment**:此策略对long、short或int类型的字段生成自动增长的主键。主键值按数值顺序递增。但这种方法存在并发问题,如果多实例访问同一数据库,可能导致...
2. native:该策略由Hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。 3. hilo:该策略通过hi/lo算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。 4. ...