1. 对于SQLServer数据库在使用中如果将表的主键字段id设为了自增的numeric那么在hibernate中的设置为:
  2. <id name="id" type="java.lang.String">
  3. <column name="id" length="50" />
  4. <generator class="native" />
  5. </id>
  6. Hibernate主键生成方式
  7. Key Generator主键产生器
  8. 可选项说明:
  9. 1) assigned
  10. 主键由外部程序负责生成,无需Hibernate参与。
  11. 2) hilo
  12. 通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
  13. 3) seqhilo
  14. 与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。
  15. 4) increment
  16. 主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候
  17. 将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状态,不同实例可能生成同样
  18. 的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。
  19. 5) identity
  20. 采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制。
  21. 6) sequence
  22. 采用数据库提供的sequence 机制生成主键。如Oralce 中的Sequence。
  23. 7) native
  24. 由Hibernate根据底层数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式。
  25. 8) uuid.hex
  26. 由Hibernate基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。
  27. 9) uuid.string
  28. 与uuid.hex 类似,只是生成的主键未进行编码(长度16)。在某些数据库中可能出现问题(如PostgreSQL)。
  29. 10) foreign
  30. 使用外部表的字段作为主键。一般而言,利用uuid.hex方式生成主键将提供最好的性能和数据库平台适应性。
  31. 另外由于常用的数据库,如Oracle、DB2、SQLServer、MySql 等,都提供了易用的主键生成机制(Auto-Increase 字段或者Sequence)。我们可以在数据库提供的主键生成机制上,采用generator-class=native的主键生成方式。不过值得注意的 是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发insert数据时可能会引起表之间的互锁。数据库提供的主键生成机制,往往是通过在一个内 部表中保存当前主键状态(如对于自增型主键而言,此内部表中就维护着当前的最大值和递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记 录的主键,之后再把这个新的最大值更新回内部表中,这样,一次Insert操作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这 对性能产生了较大影响。因此,对于并发Insert要求较高的系统,推荐采用uuid.hex 作为主键生成机制。

转载于:https://blog.51cto.com/lya041/669407

Hibernate主键生成方式相关推荐

  1. hibernate主键生成策略 问题

    转载自:https://www.jianshu.com/p/79311d81e77f 首先,如果出现这个问题你很有可能就是没有很好的注意到主键的生成策略.说到这里是不是就像去看看主键的生成呢? 在.h ...

  2. 剖析Hibernate主键生成几种常用方式

    剖析Hibernate主键生成几种常用方式 2009-09-28 10:52 佚名 IT168 字号:T | T 这里介绍Hibernate主键生成几种常用方式,由Hibernate根据不同的数据库方 ...

  3. Hibernate主键生成种类

    Hibernate实体类的*.hbm.xml配置文件: 一个参考例子: <hibernate-mapping> <!-- name:实体Bean,即类名 table:实体Bean对应 ...

  4. Hibernate主键生成策略总结(这里面讲的很详细)

    Hibernate提供的主键生成策略,使我们可以在实体类的映射xml文件中设定关键字来告诉hibernate我们要使用的主键生成方式,然后hibernate会根据设定完成数据库的主键控制. 一.首先通 ...

  5. mysql修改主键生成策略信息_常用Hibernate 主键生成策略

    1.Assigned Assigned方式由程序生成主键值,并且要在save()之前指定否则会抛出异常 特点:主键的生成值完全由用户决定,与底层数据库无关.用户需要维护主键值,在调用session.s ...

  6. JPA实体注解与hibernate主键生成策略

    JPA实体注解与hibernate主键生成策略 用hibernate注解开发项目,对于主键的生成策略有些模糊,下面是从新浪网里面看到的一篇关于hibernate注解以及主键生成策略的文章,值得一看: ...

  7. JavaEE持久层框架对比与hibernate主键生成策略总结

    一.持久层框架对比 ORM框架:即对象关系映射.它把数据库表映射到pojo类,然后通过对类的操作来实现对数据库的增删改查,sql语句自动生成. 对于代码开发者来说,就是在代码里先创建数据库连接对象,然 ...

  8. Hibernate主键生成策略总结

    Hibernate提供的主键生成策略,使我们可以在实体类的映射xml文件中设定关键字来告诉hibernate我们要使用的主键生成方式,然后hibernate会根据设定完成数据库的主键控制. 一.首先通 ...

  9. 常用Hibernate 主键生成策略(徐瑞文)

    ORM映射基本原理 1. 基于相同实体类和表,实现相互映射,类的对象对应了表中的记录,不同对象对应不同的记录,不同的记录对应不同的对象 2. 表中不同的记录通过主键来区分,不同的对象通过对象id来区分 ...

最新文章

  1. 赫夫曼树建立c语言源程序编译结果详细解释,c语言构建哈夫曼树(附运行结果图)[本站推荐]...
  2. html表单文本框怎么输出函数值,如何获取用户输入的html文本表单字段传递给javascript函数的值?...
  3. 【python】-socketServer
  4. Android之靠谱的把图片和视频插入手机系统相册
  5. Python2.6 Cx_Oracle Linux下编译安装
  6. 项目开发经验谈之:项目到底谁说了算
  7. web系统四层结构中服务器端,基于.NET平台构建四层B/S结构的动态网站
  8. 浅谈对称加密与非对称加密
  9. 生产调度java程序原码_Rxjava的线程调度源码解析
  10. 通过原码、反码、补码彻底搞清左移、右移、无符号右移
  11. 报文交换(串行)和分组交换(并行)
  12. 接口文档模板(Markdown)
  13. win查看产品密钥的方法
  14. OpenCV对图像像素尺寸的设置
  15. 敏捷管理-PDCA循环(戴明环)
  16. 502 (Bad Gateway)
  17. 虾皮马来西亚热销产品有哪些?
  18. 【BYM】Android模块化实践复盘
  19. 英语四级真题作文 计算机,2017年6月英语四级作文真题及范文:卖电脑
  20. 【方法】STM32F103C8单片机通过定时器DMA测量脉冲宽度,无需CPU干预(以DHT11传感器为例)

热门文章

  1. Ubuntu 16.04安装XMind 8
  2. Ubuntu批量修改文件名后缀
  3. PHP新手上路文件上传
  4. 【转载】yolo处理流程实例
  5. shell脚本——expect命令
  6. FTP匿名登录或弱口令漏洞及服务加固
  7. 在Linux下安装Apache
  8. webpack为什么加载不了css?
  9. Java--图片浏览器
  10. 明明连上了网,但是打不开网页