实体类的ID生成策略
主键选用原则--无意义字段/非业务
主键不能修改
主键是程序实现上利用的,与客户的实际业务无关---逻辑主键,没有业务上的意义
因为主键与业务无关,也就防止了被修改的可能性
id生成策略---解决了id生成的方式--由hibernate来完成,程序员不需要考虑,完全由hibernate进行管理
<id name="id">
<generator class="native"/>
</id>
在调用save()将对象变为持久化对象的时候,hibernate将利用id生成策略算法来对对象进行id赋值
因为,持久化对象必具有唯一的id标识值
项目中常用的生成策略:
native --依赖于数据库底层,适用范围 short int long---不同表的id都为1开始,由hibernate根据数据库类型自动选择策略,如果是mysql,则identity,如果是oracle,则sequence,否则hilo策略。
mysql : identity
oracle: sequence
hilo --依赖于数据库底层,适用范围 short int long ---一个数据库下的id不会重复
uuid 字符串id --不依赖于数据库底层,在内存中生成,整个网络中id标识符唯一
foreign 一对一外键关联时,用关联表的id值作为本表的id值
assign 程序员手动给id赋值
save()是否立即发出insert语句,取决于id值的生成是否依赖数据库底层
identity与sequence策略:
id从1开始,依次递增,依赖数据库底层来生成id
必须先insert才会有id值,所以在save()被调用时,会立即发出insert语句
因为需要数据库底层来生成id,在生成id之后,hibernate会更新内存中的id值;
hilo与uuid策略:
id值不是递增的,不依赖/不完全依赖数据库底层生成id
在save()被调用时,不会立即发出insert语句,等到commit()时才发出insert语句。
(hilo采用高低位算法生成id值,在内存中会生成一个值,再在数据库中生成一个值,这个值基于数据库中的其它表来生成,所以不需要立即插入到表中;uuid在内存中即可生成)
因为id值由hibernate在内存中自动生成,会在commit()被调用后,才会发出insert语句。
批量插入数据时,如果使用native策略,将非常的低效:
每次save()都必须先发insert语句,无法利用JDBC的批处理功能!
解决方案:
1.使用assign策略,手动指定id(先查询当前表的id值,得出下一个id值,这样就实现id连续了)
2.每次save()调用200次,flush(),批量将这200条插入到数据库中
相关推荐
### Hibernate自动生成配置文件详解 #### 一、Hibernate与自动生成配置文件的重要性 ...因此,掌握并熟练运用MyEclipse中Hibernate配置文件的自动生成功能,对任何级别的Java开发者来说都是一项极为有价值的技能。
1. **Hibernate配置文件**(hibernate.cfg.xml):这个文件包含了连接数据库所需的基本信息,如数据库URL、用户名、密码等。 2. **实体关系数据库映射文件**(.hbm.xml):这些文件定义了Java类与数据库表之间的映射...
本篇将详细讲解如何通过Hibernate配置文件自动生成数据库表,以及相关的知识点。 **一、Hibernate概述** Hibernate是Java平台上的一个开源框架,它的主要功能是提供一种映射机制,将Java类与数据库表进行对应,...
Myeclipse 自动生成 Hibernate 配置文件及实体类映射 ORM 配置文件 Myeclipse 是一个功能强大的集成开发环境(IDE),它提供了许多实用的功能来简化软件开发过程。在这个示例中,我们将展示如何使用 Myeclipse 自动...
MyEclipse作为一款强大的集成开发环境,提供了自动生成Hibernate配置文件的功能,帮助开发者快速构建项目。以下是使用MyEclipse自动生成Hibernate配置文件的详细步骤: 1. **创建数据库表**: 在开始之前,需要先...
- **缺点**:需要在Hibernate的配置文件中正确设置数据库方言,否则可能无法正常工作。 #### 四、配置示例 在Hibernate的XML映射文件中,可以通过以下方式进行配置: ```xml <id name="实体类属性名" type="java....
1.采用freeMarker模板来生成代码,真正实现了自定义代码模板; 2.理论上可以生成任何语言的任何所需要的模板; 3.更改了内部逆向工程的实现方式,提高效率和稳定性;...5.修正了生成文件编码不正确的BUG;
以下是对Hibernate中主键生成策略的详细解释。 1. **Identity策略**: 这种策略在数据库级别生成主键,常见于MySQL和SQL Server。当一个新对象被保存时,数据库会自动为该对象分配一个唯一的ID。在Hibernate中,...
本教程将深入讲解如何根据数据库表自动生成实体类、Hibernate配置文件以及实体映射文件。 首先,我们需要了解Hibernate的基本概念。Hibernate提供了一个在Java应用中使用的持久化模型,它允许开发者用面向对象的...
7. **检查Hibernate配置文件**:此时,您应该能看到Hibernate配置文件已经自动生成。 8. **生成实体类映射**: - 在`Myeclipse DataBase Explorer`视图中,选择数据库连接,并右键选择`Open Connection...`,输入...
Hibernate是Java领域中一款广泛应用的关系对象映射框架,它允许开发者用面向对象...这个“hibernate完整配置文件”压缩包应该包含了所有必要的配置和示例,是初学者和有经验的开发者深入理解Hibernate配置的宝贵资源。
其中,主键生成策略是Hibernate配置中的一个重要部分,它决定了表中的主键值如何生成。本文将重点介绍在Oracle数据库环境下,使用Hibernate的“native”策略来生成主键的具体方法及注意事项。 #### 二、主键生成...
本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和使用。 首先,主键(Primary Key)是数据库表中用于唯一标识一条记录的字段,其值在表中必须是唯一的,并且通常不...
实体类需要使用Hibernate的注解进行标记,如@Entity表示这是一个数据库表,@Table指定表名,@Id和@GeneratedValue指定主键生成策略。 ```java @Entity @Table(name = "users") public class User { @Id @...
最后,在 MyEclipse Enterprise 视图下,所有实体类以及配置文件已生成。这便完成了使用 MyEclipse 自动生成 Hibernate 映射文件和实体类的过程。 在这个过程中,我们可以了解到以下几个重要的技术点: 1. ...
本文将深入探讨如何利用Hibernate的映射文件来生成数据库,以此提高开发效率并减少手动创建数据库表的工作量。 一、Hibernate映射文件概述 Hibernate映射文件,通常以`.hbm.xml`为扩展名,是Hibernate用来定义Java...
总结来说,"NHibernate2.0 实体类和配置文件生成模板"是CodeSmith工具的一个应用实例,它简化了基于NHibernate的.NET项目中实体类和配置文件的创建过程,提升了开发效率。理解并熟练使用这些模板,有助于提升开发者...
总的来说,理解并掌握如何生成Hibernate配置文件和XML映射文件的辅助类,是提升Java开发效率的一个重要环节。它涉及到Java反射、XML解析、文件操作等多个技术领域,同时也体现了软件工程中自动化和模块化的设计思想...