博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate中generator的取值(主键生成方式)
阅读量:6831 次
发布时间:2019-06-26

本文共 1126 字,大约阅读时间需要 3 分钟。

hibernate中的主键生成方式是在***.hbm.xml文件中指定的,例如:

< generator class="native" />

这里面的generator元素就是指定主键生成方式的配置。

class属性的取值有increment、hilo、identity、sequence、native、assigned、select、seqhilo、foreign、guid等等

 

1)increment

  ①由Hibernate以递增的方式为代理主键赋值

  ②Hibernate会先读取数据库表中主键的最大值,插入记录以最大值+1的形式为主键

  ③不依赖底层数据库系统,所以适用于各类数据库系统

  ④在多线程下很容易发生错误,错误的原因是:各个线程获取数据库表中的主键的最大值相同,都以最大值+1的形式作为主键插入到数据库表中,那么会违反数据库表主键唯一性约束,就会报错。

  ⑤OID必须为long、int或short类型,如果为byte则会抛出异常。

2)hilo

  ①hibernate以high/low算法生成主键

 

3)identity

  ①由具体数据库生成主键

  ②要求数据库将主键定义为自动增长类型

  ③支持自增主键的数据库:MySQL、DB2、SQL server 、sybase等,oracle不支持

  ④OID必须为long、int或short类型,如果为byte则会抛出异常。

 

4)sequence

  ①利用底层数据库提供的序列生成标识符

  ②要求底层支持序列:DB2、Oracle

  ③OID必须为long、int或short类型,如果为byte则会抛出异常。

配置如下:

stu_seq

5)native

  ①依据底层数据库对自动生成标识符的支持能力,来选择使用identity、sequence或者hilo

  ②native标识符生成器能够根据底层数据库系统的类型,自动选择合适的方式生成主键,所以适合跨数据库平台开发

  ③OID必须为long、int或short类型,如果为byte则会抛出异常。

6)assigned

  hibernate和数据库系统都不负责生成主键的值,完全由程序员自己生成。

 

转载于:https://www.cnblogs.com/dingcx/p/7704920.html

你可能感兴趣的文章
转: Oracle AWR 报告 每天自动生成并发送邮箱
查看>>
solr dataimport 数据导入源码分析(十)总结
查看>>
So easy,JQuery调用WebServices
查看>>
GNU make manual 翻译(四十七)
查看>>
makefile中变量覆盖的小例子
查看>>
所有类型都从Object类型派生
查看>>
关于MFC和android开发上的一些相近地方
查看>>
Linux下rsync的用法
查看>>
c# DataGridView控件的使用
查看>>
TChart的用法
查看>>
DTP语义组分析
查看>>
(老孙随笔)燃烧青春和诗意的IT人生
查看>>
在PowerDesigner中设计概念模型
查看>>
SQL语句,查询数据库里是否存在某个表
查看>>
CSS常用属性
查看>>
搜索引擎开始「实体搜索」新领域竞争,Google、百度分别发力实体搜索产品
查看>>
让敏捷落地-软件研发管理最佳实践(上海站)
查看>>
【R】大型机Linux系统安装R及bsub提交R任务
查看>>
演练:创建并运行托管代码的单元测试 VS2012
查看>>
C#在托盘显示图标
查看>>