`
p_3er
  • 浏览: 55716 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

第八章 ID主键生成策略

 
阅读更多

increment

(选查找数据库中的主键生成,然后再把对象insert进去)

用于为long, short或者int类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。 在集群下不要使用。

identity

(主要用于mysql数据库)

注:对于MySql数据库使用递增序列时需要在建表时对主键指定为auto_increment属性。

对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。 返回的标识符是long, short 或者int类型的。 (数据库自增)

sequence

(主要用于Oracle)

在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。(数据库自增)

hilo

使用一个高/低位算法高效的生成long, short 或者 int类型的标识符。给定一个表和字段(默认分别是 hibernate_unique_key和next_hi)作为高位值的来源。 高/低位算法生成的标识符只在一个特定的数据库中是唯一的。

seqhilo

使用一个高/低位算法来高效的生成long, short 或者 int类型的标识符,给定一个数据库序列(sequence)的名字。

uuid (字符串)

用一个128-bit的UUID算法生成字符串类型的标识符, 这在一个网络中是唯一的(使用了IP地址)。UUID被编码为一个32位16进制数字的字符串,它的生成是由hibernate生成,一般不会重复。

UUID包含:IP地址,JVM的启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。 在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下的能做的最好实现了

String uuid = java.util.UUID.randomUUID().toString();

guid

在MS SQL Server 和 MySQL 中使用数据库生成的GUID字符串。

native

跨数据库时使用,由底层方言产生。

根据底层数据库的能力选择identity, sequence 或者hilo中的一个。(数据库自增)

assigned

用户自定义id;

让应用程序在save()之前为对象分配一个标示符。这是 <generator>元素没有指定时的默认生成策略。(如果是手动分配,则需要设置此配置)

select

通过数据库触发器选择一些唯一主键的行并返回主键值来分配一个主键。

foreign

使用另外一个相关联的对象的标识符。通常和<one-to-one>联合起来使用。

复合主键(联合主键):多个字段构成唯一性。
分享到:
评论

相关推荐

    Hibernate的课件以及一些配置的帮助

    本课件集合旨在提供对Hibernate框架的深入理解,包括其核心概念、配置以及主键生成策略等关键知识点。 【描述】:“Hibernate的课件包括了对主键生成策略的讲解,以及详尽的Hibernate参数设置一览表,这些都是在...

    Hibernate笔记 马士兵

    第13课 ID主键生成策略 20 一、 Xml方式 20 元素(主键生成策略) 20 二、 annotateon方式 21 1、AUTO默认 21 2、IDENTITY 22 3、SEQUENCE 22 4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 ...

    利用时间生成8位不重复数

    生成的8位十六进制字符串在大多数情况下已经足够独特,但考虑到时间戳的精度,如果系统在同一秒内需要生成多个不重复的8位数字,可能需要结合其他策略,如添加进程ID、随机数或者序列号,以确保在极短时间内生成的ID...

    java框架之hibernate

    综上所述,Hibernate提供了丰富的特性来支持各种数据库操作需求,包括不同的加载策略、自动同步机制以及多种主键生成策略等。理解并合理利用这些特性可以帮助开发者构建高性能且易于维护的应用系统。

    Oracle数据库应用开发及实践.rar

    同时,序列是自动生成唯一ID的关键工具,尤其在主键生成方面。 "第6章 PL SQL基础.ppt"和"第7章 PL SQL进阶.ppt"是关于Oracle的Procedural Language/SQL的,它扩展了SQL的功能,允许编写存储过程、函数、触发器等,...

    dorado学习笔记

    例如,如果数据库中的`id`字段是`VARCHAR`类型,则应将程序中对应的主键生成策略设为`JDK-UUID`,并确保数据类型的兼容性。 #### 五、Tomcat 405 错误 如果应用部署到Tomcat后出现405错误(请求方法不被允许),...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    第8章 任务C:创建购物车 73 8.1 Session 73 8.2 迭代C1:创建购物车 76 8.3 迭代C2:更聪明的购物车 78 8.4 迭代C3:处理错误 81 8.5 迭代C4:结束购物车 84 第9章 任务D:Ajax初体验 87 9.1 迭代D1:迁移购物车 87...

    java使用jdbc插入信息时获取id1

    标题"java使用jdbc插入信息时获取id1"指的是在Java程序中,通过JDBC执行SQL插入语句后,如何获取数据库自动生成的唯一标识符(通常是主键ID)。描述中的"设置成可以获取主键"是关键步骤,这可以通过调用`...

    hibernate v3.04中文参考手册

    - 自定义主键生成策略,如SequenceGenerator、TableGenerator等。 12. **事件监听与拦截器** - 实现Hibernate事件监听器,监听对象的生命周期事件。 - 使用Interceptor,自定义逻辑,如对象的预加载、预更新等。...

    hibernate4.2RELASEjar包

    4. **主键生成策略**:通过@Id注解下的@GeneratedValue可以定义主键生成策略,例如UUID、SEQUENCE、IDENTITY等。 5. **持久化操作**:Hibernate提供了CRUD(创建、读取、更新、删除)操作的API,如Session的save()...

    hibernate笔记

    - @Entity标识实体类,@Table定义对应的数据库表,@Id标记主键,@GeneratedValue指定主键生成策略。 5. 数据持久化: - 插入:使用Session的save()或saveOrUpdate()方法将对象持久化到数据库。 - 更新:调用...

    hibernate源码release-4.1.4.Final版

    Hibernate通过@Entity注解标记Java类为数据库表的映射,@Table定义表名,@Id指定主键,@GeneratedValue管理主键生成策略。其他如@Column、@OneToMany、@ManyToOne等注解则用于定义字段映射关系。 四、缓存机制 ...

    hibernateDemo

    4. **持久化类和主键生成策略**:@GeneratedValue用于指定主键的生成策略,例如,可以使用.AUTO策略让Hibernate自动管理主键生成,或者使用.SEQUENCE、IDENTITY等策略。 5. **配置文件**:`hibernate.cfg.xml`是...

    java开始面试的第10天.doc

    - 第10行:`&lt;generator&gt;`标签定义了主键生成策略,这里使用序列`FEE_SEQ`生成主键值。 其余的`&lt;property&gt;`标签分别对应`Fee`类的其他属性,如`feeName`、`baseDuration`、`baseCost`等,它们都映射到了`COST`表的...

    马士兵hibernate学习笔记.docx

    6. **ID生成策略**:Hibernate提供了多种主键生成策略,如.AUTO,它可以根据不同的数据库自动选择合适的主键生成方式,如自增、UUID等。 7. **Hibernate核心开发接口**:包括Session、Transaction、Query等接口,...

    hibernate-annotations3.4.0.GA.zip

    - `@GeneratedValue`:指定主键生成策略,如自动增长、序列等。 - `@Column`:定义实体属性映射到数据库表的具体列,可以设置列的长度、是否为空等属性。 - `@ManyToOne`, `@OneToMany`, `@OneToOne`, `@...

    hibernate3API

    - @Id:标记主键字段,@GeneratedValue可指定主键生成策略。 - 其他注解如@Column、@ManyToOne、@OneToMany等,用于定义字段属性和关系映射。 5. 数据库操作 - 开启Session:SessionFactory.openSession()。 - ...

    SpringBoot第 8 讲:SpringBoot+JPA

    例如,我们可以创建一个名为`User`的实体类,使用`@Id`注解来指定主键,`@GeneratedValue`来指定主键生成策略。同时,使用`@Column`注解来定义字段与数据库列的对应关系。 接下来是Repository接口的使用。Spring...

Global site tag (gtag.js) - Google Analytics