什么是主键

我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。

主键生成的方式

1.       自动增长型字段

由数据库生成主键字段,使用简单,但是对于外键关联、数据复制等不能很好的处理。

2 .  手动增长型字段

通过一张单独的表存储生成的主键,手动生成主键。保证了数据的正确性,但是增

加了往返的数据库访问,并且要自己处理并发。

3.       使用Guid

Guid可以保证数据的唯一性,但是其占据的空间比较大,效率不高,同时生成的主键也没有固定的顺序可言。

4.       使用“COMB(Combine)”类型

将guid的后6给字节改成该guid生成的时间,这样既保证了主键的唯一,也保证了主键的顺序性!

JBPM主键生成方式

       Jbpm没有使用hibernate的主键生成机制,而是自己实现的手动增长型字段。

Jbpm的主键分为两种情况,为数据库持久化实例生成dbid和为Execution生成ID

IdComposer:为Execution生成Id的基类

DbidGenerator:为数据库持久化实体类生成主键dbid

DatabaseDbidGenerator:将最大值保存到数据库中

DatabaseIdComposer:通过数据库持久化相关对象的数据为Execution生成

Id

并发访问处理将主键的获取放到事务中进行处理,这样保证了数据的锁定,同时赋予进程三次重试机会,并等待一定时间后进行重试。

转载于:https://www.cnblogs.com/wufengtinghai/archive/2011/04/26/entitiykey.html

JBPM对象主键生成机制相关推荐

  1. Hibernate的increment主键生成机制带来的问题

    最近给学校做的系统,总出现主键插入冲突的问题.主键是通过hibernate自动生成的,设置increment属性,总出现Duplicate entry的错误.搜到解决方案如下: 在网站运行在apach ...

  2. Hibernate各种主键生成策略与配置详解 - 真的很详细啊!!

    1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...

  3. 基于按annotation的hibernate主键生成策略

    这里讨论代理主键,业务主键(比如说复合键等)这里不讨论. 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id ...

  4. 【Hibernate】hibernate主键生成策略与配置详解

    //####################################################### **Hibernate各种主键生成策略与配置详解** //############# ...

  5. Hibernate各种主键生成策略与配置详解

    为什么80%的码农都做不了架构师?>>>    1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibern ...

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

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

  7. hibernate 各种主键生成策略(转)

    http://www.cnblogs.com/kakafra/archive/2012/09/16/2687569.html 1.assigned 主键由外部程序负责生成,在 save() 之前必须指 ...

  8. jpa基于按annotation的hibernate主键生成策略

    JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 一.JPA通用策略生成器  通过annotation来映射hibernate实体的,基于annotation的hi ...

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

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

最新文章

  1. 如果我是小白, 学Python要准备什么呢?
  2. Ruby的.nil? .empty? .blank? .present?区别
  3. __tostring和__invoke 方法
  4. python2异步编程_python异步编程 (转载)
  5. 第八届蓝桥杯决赛 平方十位数(枚举)
  6. Matlab计算速度优化(矩阵,bsxfun,repmat)
  7. 均匀白噪声的定义及特点_职业卫生噪声布点与检测实务
  8. Spring MVC 测试 | 模拟提交表单
  9. 爱链工具 v1.11.24.0
  10. [译] 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
  11. matplotlib在图像上方添加文字、标签
  12. win10 iot core java_Windows 10 IoT Core开发环境
  13. flacs 安装教程_文章详细信息
  14. Head First Design Pattern: 策略模式
  15. 4个方法判断食物的热量高低
  16. 使用Hbuilder开发python
  17. 低成本精准营销助推中小企业度过经济寒冬
  18. 首曲线、计曲线、间曲线和助曲线
  19. 系统更新win11 后,右键没有显示git,添加注册表选项的解决办法
  20. 数据库系列(3):数据库管理系统的分类

热门文章

  1. r语言 调用c windows,R:window()函数
  2. GT Transceiver中的重要时钟及其关系(6)TXUSRCLK以及TXUSRCLK2的用途与关系
  3. PCIe例程理解(一)用户逻辑模块(接收)仿真分析
  4. 【 C 】函数参数通过传值调用还是传址调用?
  5. 最常用的10个Matlab快捷键,助你编程更高效
  6. 渐进式Web应用程序的深入概述
  7. 脉讯发布“社群搜索工具” 助企业精准洞察消费者需求
  8. P2P征信 大数据堪当重任?
  9. 怎么将jenkins打包后的war自动部署到jetty上? 1
  10. 权限的继承,取消继承,强制继承