博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JBPM对象主键生成机制
阅读量:6939 次
发布时间:2019-06-27

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

   
什么是主键

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

      主键生成的方式

1.       自动增长型字段

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

       2 .  手动增长型字段

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

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

3.       使用Guid

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

4.       使用“COMBCombine类型

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

你可能感兴趣的文章
Docker Registry v2 + Token Auth Server (Registry v2 认证)实例。
查看>>
参考---------正确安装MySQL5.6的配置文件
查看>>
Pthon Matplotlib 画图
查看>>
第四章 DNS域名解析服务
查看>>
C# internal关键字
查看>>
RocketMQ集群搭建
查看>>
CentOS 6.3 配置 zabbix
查看>>
洪水***怎么办?
查看>>
Qemu&KVM第二篇之(5)Libvirt 相关问题
查看>>
总结和规划
查看>>
怎么复制磁盘里的数据?
查看>>
MySQL 使用127.0.0.1 链接不上
查看>>
用户层修改peb实现隐藏一些东西
查看>>
java设计模式
查看>>
刷新网卡ip
查看>>
侦听服务端口
查看>>
HDOJ 1005 Number Sequence
查看>>
SHELL训练营--day6__shell脚本(2)
查看>>
zabbix 监控硬盘状态
查看>>
关于Cpp中的extern
查看>>