`

[转]主键自动生成办法

阅读更多
  1:uuid.hex: 采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库 。在*.hbm.xml中按如下设置。

 
xml 代码
  1. <id name="id" unsaved-value="null">  
  2.   <generator class="uuid.hex"/>  
  3.  </id>  


2:指定参数的情况
   
xml 代码
  1. <id name="id" unsaved-value="0">    
  2.       <generator class="sequence">  
  3.         <param name="sequence">SEQ_CHILD</param>  
  4.       </generator>  
  5.     </id>  


3:以下是Tracylau 所写,网址如下:http://forum.iteye.com/allbloglist.php?page=5
所有的<generator>的Class都是从net.sf.hibernate.id.IdentifierGenerator接口实现得到的,Class属性表示该generator是由哪种方式来生成的。生成方式包括:

increment:生成long, short或者int类型的主键,不能在cluster环境下使用。适用于所有数据库
identity:生成long, short或者int类型的主键。适用于DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL
sequence :生成long, short或者int类型的主键。适用于DB2, PostgreSQL, Oracle, SAP DB, McKoi,Interbase.
hilo:生成long, short或者int类型的主键。需要提供一个数据库的表来存放生成的主键信息。当采用应用服务器的JTA提供的数据库连接或者用户自定义的数据库连接的时候,不要使用这种主键生成方式。适用于所有数据库
seqhilo:采用给定的数据库的sequence来生成long, short或者int类型的主键。适用于DB2, PostgreSQL, Oracle, SAP DB, McKoi,Interbase.

uuid.hex采用128位的算法来生成一个32位字符串。最通用的一种方式。适用于所有数据库
uuid.string:同样采用128位的UUID算法。将生成的字符编码位16位。适用于除PostgreSQL.以外的数据库
native:根据具体连接的数据库从identity, sequence或者hilo选择一种来生成主键。适用的数据库根据选择的生成方式确定。
assigned: 交给应用自己给主键赋值。要注意的是赋值必须在调用save()方法之前完成。适用的数据库根据选择的生成方式确定。
分享到:
评论

相关推荐

    hibernate中自动生成主键的办法

    Hibernate作为一款流行的Java持久层框架,提供了多种自动生成主键的方法,以适应不同场景的需求。本文将深入探讨Hibernate中自动生成主键的几种常见策略及其应用场景。 ### 1. UUID.hex UUID(Universally Unique ...

    Oracle主键自增的办法

    在 Oracle 数据库中,与许多其他关系型...这种方法适用于那些需要自动生成唯一标识符的情况,比如主键或业务流水号。需要注意的是,虽然这种方法很实用,但在高并发环境下可能需要考虑序列值的并发问题,以及性能优化。

    mybatis-plus id主键生成的坑

    这样,MyBatis-Plus 将不再自动生成 ID,而是依赖于数据库的 AUTO_INCREMENT 属性。 MyBatis-Plus 提供了多种 ID 生成策略,除了 AUTO,还有其他几种类型: - INPUT (1, “用户输入ID”):用户手动输入主键值。 -...

    mybatis自动生成工具

    MyBatis Generator(MBG)是一款强大的自动化代码生成工具,主要针对MyBatis框架,能够帮助开发者自动生成Java实体类、Mapper接口与XML配置文件,极大地提高了开发效率。这款工具可以减少手动编写重复代码的工作量,...

    根据表结构生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第6版)

    5、新增实体主键生成策略,可以配置手动生成主键也可以配置自动生成主键。 6、可以根据选择的标准模板不同自动生成相应扩展名的文件,也可以手动设置文件扩展名。 7、新增设置文件注释,并可以使用部分系统参数。...

    好用的代码生成源码

    示例如下: UserInfoBaseDao : 自动生成的代码, 不能手工修改,用于重复生成 UserInfoDao extends UserInfoBaseDao : 存放手工的代码,不能重复生成 页面的重复生成还没有啥好办法。 语法参考: ...

    详解mybatis plus使用insert没有返回主键的处理

    这里使用了 `@TableId` 注解指定了主键字段 `user_id` 和其自增类型 `IdType.AUTO`,这意味着在插入数据时,MP 应该自动处理自增主键的生成和回填。 接着,我们看 DAO 层的配置,这里继承了 `BaseMapper`: ```...

    mybatisGenerator 代码生成工具

    MybatisGenerator是一款强大的Java代码生成工具,它能够帮助开发者自动生成Mybatis框架所需的Mapper接口、Mapper XML文件、实体类以及Service层代码,极大地提高了开发效率。这个工具是基于官方提供的jar包进行二次...

    Hibernate学习笔记整理

    * Identity:支持主键自动增长 * Uuid:持久化类中的属性必须是 String 类型 * Native:Hibernate 会根据数据库的不同,选择合适的主键的生成策略 Sequence * 是 oracle 内部特有的内容,相当于 uuid,所以是字符...

    Laravel开发-laravel-snowflake .zip

    - 在业务代码中,通过调用`Snowflake::generate()`生成ID,或在模型事件中自动处理ID生成。 4. **分布式一致性** - laravel-snowflake通过确保每个节点都有自己的ID,以及使用时间戳作为主要排序依据,确保了...

    黑马Mybatis教案 资源(无视频)

    通过逆向工程,开发者无需手动编写这些基础代码,而是通过配置文件指定数据库连接信息和表名,让Mybatis自动生成相应的Java代码。 2. **约束 (Constraints)** 在数据库设计中,约束用于确保数据的完整性和一致性。...

    青鸟一小部分教学.ppt

    4. **使用工具简化Hibernate开发**:MyEclipse作为集成开发环境,提供了对Hibernate的集成支持,可以自动生成实体类、映射文件以及DAO实现,大大简化了开发过程。例如,通过MyEclipse可以直接生成基于Hibernate的DAO...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    - 使用MyEclipse中的DB Browser工具根据数据库表结构自动生成Java实体类。 - 将这些实体类放置在`src/com.accp/entity`目录下。 **2. 创建DAO接口与实现:** - 创建`IUserDao`接口,定义基本的CRUD操作方法,如`...

    S2SH框架搭建登录实例

    这会自动生成对应于数据库表结构的实体类,方便我们进行CRUD操作。 对于登录功能的实现,我们通常会在Struts2的Action类中编写处理逻辑。用户提交的登录信息(用户名和密码)会通过Action传递给服务层(Spring管理...

    样品管理流程设计

    - **样品流水号**:系统自动生成的唯一标识符 - **样品名称**:录入人员填写的基本准确的样品名称 - **样品类型**:区分样品为“小样”还是“来样” - **来样单位**:填写样品的来源单位 - **录入人**:系统默认为...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     6.1.1 把主键定义为自动增长标识符类型  6.1.2 从序列(Sequence)中获取自动增长的标识符 6.2 Java语言按内存地址区分不同的对象 6.3 Hibernate用对象标识符(OID)来区分对象 6.4 Hibernate的内置标识符生成器...

Global site tag (gtag.js) - Google Analytics