通过以上的讲述,不难总结出
JPA
可定义的生成策略有四种:
TABLE
,
SEQUENCE,
,
IDENTITY
,
AUTO
。在选择这四种主键生成策略时,有如下几条建议。
l
SEQUENCE
,
IDENTITY
两种策略由于针对的是特殊的一些数据库,所以如果在需求前期,未确定系统要支持的数据库类型时,最好不要使用。因为一旦更改数据库类型时,例如从
Oracle
变更为
MySQL
时,此时使用的
Sequence
策略就不能使用了,这时候需要变更设置,会变得很麻烦。
l
AUTO
自动生成策略虽然能够自动生成主键,但主键的生成规则是
JPA
的实现者来确定的,一旦使用了这种策略,用户没有办法控制,比如说初识值是多少,每次累加值是多少,这些只能靠
JPA
默认的实现来生成。对于比较简单的主键,对主键生成策略要求少时,采用的这种方式比较好。
l
TABLE
生成策略是将主键的值持久化在数据库中表中,因为只要是关系型的数据库,都可以创建一个表,来专门保存生成的值,这样就消除了不同数据库之间的不兼容性。另外,这种策略也可是设置具体的生成策略,又弥补了
AUTO
策略的不足。所以,这种策略既能保证支持多种数据库,又有一定的灵活性,建议使用该策略。
l
若以上的
4
种主键生成策略仍不满足需求,这时可以通过一定的规则来设置主键的值。例如利用
UUID
作为主键,也是常用的策略之一,此时就需要在程序中自动生成,然后设置到实体的主键上,而不能通过
JPA
的主键生成策略来实现了。
总之,在选择主键生成策略时,要根据需求,选择最合适的策略。
分享到:
相关推荐
在 Hibernate 中,主键生成策略主要包括以下几种: 1. **native** - **描述**:对于不同的数据库,`native` 策略会采用不同的主键生成方式。例如,在 Oracle 数据库中使用 Sequence 方式;而对于 MySQL 和 SQL ...
接下来,我们将详细介绍给定文件中提到的几种主键生成策略: ##### 1. **Native** - **简介**:`native` 策略根据使用的数据库类型自动选择合适的主键生成方式。 - **应用场景**: - 对于 Oracle 数据库,采用 `...
本文将详细介绍几种常见的主键生成策略,并结合示例代码帮助读者更好地理解和运用。 #### 二、assigned - 外部程序生成 **定义:** `assigned`是一种由外部程序负责生成主键的策略。在调用`save()`方法之前,需要...
通过本文的介绍,我们可以了解到Hibernate提供的几种主键生成策略各有特点,开发者可以根据项目的实际需求和所使用的数据库类型来选择最适合的策略。无论是自然主键还是代理主键,Hibernate都能够提供灵活而强大的...
在Hibernate中,主键生成策略主要包括以下几种: - **identity**:由数据库自动分配一个唯一值,适用于支持自增字段的数据库如MySQL。 - **sequence**:使用数据库提供的序列生成主键,适用于Oracle等数据库。 - **...
本文将详细介绍Hibernate中五种常用的主键生成策略:assigned、increment、hilo、seqhilo以及native,并探讨它们的特点、应用场景及配置方式。 #### 二、assigned **定义与用途:** - **定义:**assigned策略允许...
这个例子可能包括了如何生成 Entity 类、DAO 接口及其实现,以及 Mapper XML 文件,并且可能展示了如何处理复杂的表关联、主键生成策略等。 总之,自定义 MyBatis 代码生成策略是一项实用的技术,它可以帮助我们...
在Hibernate中,可以使用`<generator class="sequence">`来指定使用Sequence作为主键生成策略,并通过`<param name="sequence">SEQ_CHILD</param>`来指定具体的序列名称。这种方式适用于需要生成大量连续主键值的...
接下来,我们探讨如何在Hibernate中配置GUID主键生成策略。在Hibernate中,我们可以使用`@GeneratedValue`和`@GenericGenerator`注解来定义主键的生成策略。对于GUID,我们可以选择`GenerationType.UUID`。以下是一...
在实际应用中,选择哪种主键生成策略应考虑如下因素: - 数据库类型和版本 - 应用程序的需求,如是否需要分布式或并行插入 - 性能要求,包括查询速度和存储空间 - 数据一致性与安全性 - 系统扩展性和可维护性 设计...
在使用过程中,主键生成策略是一个常见的关注点,尤其是当出现错误时。本文将详细探讨 MyBatis-Plus 中主键生成所遇到的问题、错误原因及相应的解决方案。 首先,MyBatis-Plus 默认的主键生成策略是 `IdType.AUTO`...
`Identity`是一种常见的自增主键生成策略,在MySQL、DB2以及MS SQL Server等数据库系统中均有支持。它能够为每一行记录生成一个唯一的ID值。例如,在MySQL中创建一个表时可以这样定义: ```sql CREATE TABLE t_user...
除了使用序列实现自增主键外,Oracle还提供了其他几种主键生成策略,比如使用`SYS_GUID()`函数生成全局唯一标识符(GUID)作为主键。这种方法适用于需要全局唯一性的场景,但可能不适合对性能要求较高的应用,因为`...
本文将深入探讨Hibernate中几种常用的主键生成策略,并分析各自的优缺点及适用场景。 #### 1. Assigned(显式赋值) **简介:** Assigned策略允许开发人员在保存对象到数据库之前手动指定主键值。这种方式下,...
本文主要探讨几种常见的主键选取策略,包括自动增长字段、手动增长字段、UniqueIdentifier以及“COMB(Combine)”类型。 一、自动增长型字段 自动增长字段是最常用的一种主键策略,尤其是在SQL Server中。这种类型...
SQL主键产生器通常有以下几种实现方式: 1. **序列(Sequences)**:在某些数据库系统如Oracle中,可以创建序列对象来生成递增的整数,这些整数可以被用作主键。例如,你可以定义一个序列,每次查询时序列会自动加1...
例如,`@Entity`用于标记一个类为实体,`@Table`定义实体对应的数据库表,`@Id`标识实体的主键,`@GeneratedValue`管理主键生成策略等。使用注解可以使代码更加简洁且易于维护。 **Apache Log4j** Log4j是Apache的...
本文将针对Hibernate中的几个重要概念进行详细讲解,包括主键生成策略、get()与load()的区别以及二级缓存的使用。 首先,探讨的是Hibernate中的主键生成策略。在Hibernate中,主键的生成主要有三种方式:uuid、...