[发明专利]一种基于SpringBoot+JPA的数据库乐观锁实现方法及系统有效
申请号: | 201910966851.4 | 申请日: | 2019-10-12 |
公开(公告)号: | CN110716936B | 公开(公告)日: | 2022-04-05 |
发明(设计)人: | 孙文君;吴东生;于法栋 | 申请(专利权)人: | 浪潮云信息技术股份公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/23 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 孙园园 |
地址: | 250100 山东省济南市高*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 springboot jpa 数据库 乐观 实现 方法 系统 | ||
1.一种基于SpringBoot+JPA的数据库乐观锁实现方法,其特征在于,该方法步骤如下:
S1、创建lock_table表:在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;
S2、操作加锁:将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;具体如下:
S201、获取锁:查询lock_table表获取锁的信息,确保对应的进程获取该锁;步骤如下:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤(2);
(2)、执行update语句更新该锁的状态为锁定,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行;
S202、执行事务:对应进程进行继续执行,完成对数据库的事务操作;
S203、释放锁:事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
2.根据权利要求1所述的基于SpringBoot+JPA的数据库乐观锁实现方法,其特征在于,所述步骤S1中锁的数据信息包括锁名、版本号及状态。
3.根据权利要求1所述的基于SpringBoot+JPA的数据库乐观锁实现方法,其特征在于,所述步骤(2)中update语句增加@Transactional、@Modifying注解。
4.一种基于SpringBoot+JPA的数据库乐观锁系统,其特征在于,该系统包括,
lock_table表创建模块,用于在数据库中新建一张lock_table表,lock_table用于存放锁的数据信息;
加锁操作模块,用于将并发事务操作加锁,在数据库中的lock_table表中增加该锁的数据信息;
其中,加锁操作模块包括,
锁获取模块,用于查询lock_table表获取锁的信息,确保对应的进程获取该锁;锁获取模块的工作过程:
(1)、查询lock_table中锁的信息,并判断该锁的版本号与当前版本号的大小关系:
若锁A的版本号小于当前日期且状态为未锁定,则执行步骤S302;
(2)、执行update语句更新该锁的状态为锁定,执行成功后返回值为更新的数据条数;
(3)、判断对应进程更新的数据条数是否大于0:
①、若对应进程更新的数据条数大于0,则说明对应进程获取了该锁;
(4)、对应进程继续执行下一步,未获取到锁的进程终止执行;
事务执行模块,用于对应进程进行继续执行,完成对数据库的事务操作;
锁释放模块,用于在事务执行结束后,对应进程更新对应锁的版本号为当前日期,状态更新为未锁定,操作结束。
5.根据权利要求4所述的基于SpringBoot+JPA的数据库乐观锁系统,其特征在于,所述锁的数据信息包括锁名、版本号及状态。
6.根据权利要求4所述的基于SpringBoot+JPA的数据库乐观锁系统,其特征在于,所述update语句增加@Transactional、@Modifying注解。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮云信息技术股份公司,未经浪潮云信息技术股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910966851.4/1.html,转载请声明来源钻瓜专利网。