ss3ex中Hibernate的乐观锁使用

Hibernate支持乐观锁。当多个事务同时对数据库表中的同一条数据操作时,如果没有加锁机制的话,就会产生脏数据(duty data)。Hibernate有2种机制可以解决这个问题:乐观锁和悲观锁。这里讨论乐观锁。
Hibernate乐观锁,能自动检测多个事务对同一条数据进行的操作,并根据先胜原则,提交第一个事务,其他的事务提交时则抛出org.hibernate.StaleObjectStateException异常。
要实现Hibenate乐观锁,我们首先要在Entity类里增加一个版本控制字段,字段名随意,比如就叫version,对应hibernate类型只能为long,integer,short,timestamp,calendar,也就是只能为数字或timestamp类型。然后在字段上面加个@Version注释,如:
@Version
private Long version;

[color=red]数据更新保存时注意:[/color]
页面提交数据,后台更新时,如果提交了ID字段,但是没有提交version字段,那么,后台默认为该数据还是一条新数据,所以不做更新操作,做插入操作。
解决方法有2种(根据群里讨论的结果):
1、提交ID字段时,同时提交version字段;
2、只提交ID字段,后台根据ID先get得到一个entity,然后set进其他的值,最后再保存。
基于Java的教务系统开发:Spring Boot与MyBatis Plus实战 在Java企业级应用开发中,Spring Boot与MyBatis Plus已成为构建业务系统的黄金组合。教务系统作为典型的生命周期长、角色多、报表多的业务场景,其开发难点并非CRUD,而是选课并发、行级数据权限与学期切换等核心问题。通过合理设计数据库表结构,利用乐观锁与唯一索引保证选课不超选,借助RBAC模型与用户上下文实现细粒度数据隔离,可有效避免上线后的数据错乱与越权风险。同时,事务失效、中文乱码、时间边界等高频坑也需重点关注。本文以Java教务系统为例,从技术选型到核心模块落地,系统讲解如何用Spr 阅读详情

相关推荐

SpringBoot智慧社区管理系统:从数据库设计到部署实战全解析

SpringBoot作为Java后端开发的主流框架,以其自动配置和快速构建特性,成为中小型管理系统的最佳实践。而一个成熟的管理系统,离不开合理的数据库设计与严密的权限控制。从业主报修到物业缴费,从JWT无状态认证到跨域联调,SpringBoot + MyBatis + MySQL的组合能够撑起一套完整且可运维的业务闭环。智慧社区管理系统正是这样的典型项目,它覆盖了后端开发中的需求拆解、表结构建模、核心业务实现与部署运维全流程。通过剖析这一项目,开发者不仅能掌握SpringBoot的核心用法,更能提升对业务建

weixin_34163553的博客 388

Hibernate乐观锁的实现原理

                 Hibernate乐观锁的实现原理Hibernate支持乐观锁。当多个事务同时对数据库表中的同一条数据操作时,如果没有加锁机制的话,就会产生脏数据(duty data)。Hibernate有2种机制可以解决这个问题:乐观锁和悲观锁。这里我们只讨论乐观锁。   Hibernate乐观锁,能自动检测多个事务对同一条数据进行的操作,并根据先胜原则,提交第一个事务

tongzhuo312的专栏 1062

C#与发那科机器人通信实战:从SDK配置到机械臂控制

本文详细介绍了如何使用C#与发那科机器人进行通信,从SDK配置到机械臂控制的完整实战流程。内容包括环境准备、通信连接建立、机械臂运动控制、异常处理与状态监控,以及高级功能实战,帮助开发者快速掌握工业机器人编程技术。

weixin_42524276的博客 459

Hibernate(五)——面向对象查询语言和锁

Hibernate做了数据库中表和我们实体类的映射,使我们不必再编写sql语言了。但是有时候查询的特殊性,还是需要我们手动来写查询语句呢,Hibernate框架为了解决这个问题给我们提供了HQL(Hibernate  Query  Language)面向对象的查询语言,和QBC(Query by Criteria )完全面向对象的查询,这里简单总结一下如何是面向对象来编写ql语句呢。

学会改变自己——才能突破 6964

XDS110 USB Debug Probe连接错误-260:CCS Theia环境下的诊断与修复指南

本文详细解析了CCS Theia环境下XDS110 USB Debug Probe连接错误-260的诊断与修复方法。从硬件连接到驱动状态、固件更新到软件配置,提供了全面的排查指南,帮助开发者快速解决这一常见的调试器通信障碍问题,确保嵌入式开发工作流畅进行。

hope8的博客 285

C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过scanf("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan

weixin_49764077的博客 8720

Hibernate框架详解(五)面向对象查询语言和锁

Hibernate做了数据库中表和我们实体类的映射,使我们不必再编写sql语言了。但是有时候查询的特殊性,还是需要我们手动来写查询语句呢,Hibernate框架为了解决这个问题给我们提供了HQL(Hibernate  Query  Language)面向对象的查询语言,和QBC(Query by Criteria )完全面向对象的查询,这里简单总结一下如何是面向对象来编写ql语句呢。

z742182637的博客 647

SAP开发实战:用FI_DOCUMENT_CHANGE BAPI批量修改FB03凭证抬头和行项目文本(附完整ABAP代码)

本文详细介绍了如何使用SAP的FI_DOCUMENT_CHANGE BAPI批量修改FB03凭证抬头和行项目文本,提供完整的ABAP代码实现方案。通过该BAPI,开发者可以高效完成财务凭证的批量修改,确保数据一致性和审计合规性,显著提升SAP财务模块的运维效率。

weixin_29224589的博客 382

Hibernate--面向对象查询语言和锁

声明:本贴只用于个人学习和总结,没有任何商业用途,如果侵权或问题,请尽早联系,本人马上删贴。   Hibernate--面向对象查询语言和锁         hibernate做了数据库中表和我们实体类的映射,使我们不必再编写sql语言了。但是有时候查询的特殊性,还是需要我们手动来写查询语句呢,Hibernate框架为了解决这个问题给我们提供了HQL(Hibernate  Query  ...

yjc0403的博客 273

【SAM2系列】windows单GPU复现时的bug解决记录

windows运行sam2,就感觉在开一艘破破烂烂的船,每走一步报一个错,bug源源不断的冒出来😭😭😭😭😭。

weixin_43571113的博客 1317

QT实现计算器(C/C++)

digitClicked()槽函数用于处理数字按钮的点击事件,operatorClicked()槽函数用于处理运算符按钮的点击事件,equalsClicked()槽函数用于处理等号按钮的点击事件。在operatorClicked()槽函数中,我们获取被点击按钮的文本作为当前运算符,并将文本框中的内容转换为双精度浮点数,存储为操作数1。在上述代码中,我们添加了一个私有成员变量m_operand1,用于存储第一个操作数的值,以及一个私有成员变量m_currentOperator,用于存储当前运算符的值。

CyberNova的博客 385

练功秘籍---A

常用整理

CarryBest的博客 1650

SAP ABAP SM50 的另类用途 - ABAP 工作进程对数据库表读取操作的检测

今天是2020年五一国际劳动节,Jerry祝大家劳动节快乐。 虽然五一国际劳动节来源于一百多年前国外无产阶级的一次大罢工,但由于国情原因,国内很多行业的从业人员,好像天生就是劳碌命。比如程序员行业。 2014年五一劳动节,我在和一个不是总能重现的SAP CRM incident做斗争。详情参考Jerry之前的文章记一次SAP开发工程师给微软Azure报incident的体验. 当时处理完这个复杂...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 8679

Spring Security2中设置Cookie的保存时间

今天改了下Ss3ex中Spring Security2的COOKIE的保存时间设置,取消了原来的两周默认值,改为用户自定义期限,粘贴相关代码如下: [code="xml"] [/code] 也许还有更好的实现,下面附上源代码,SVN中已经更新了...

三上 1653

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

丨汀、的博客 656

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

实现线程内和线程间传值,合理使用ThreadLocal

以下均在ss3ex环境中 1、理解线程 [color=blue]用户请求一个URL,所触发的一系列操作,均在一个线程中。即一个servlet中执行的操作均在一个线程中。[/color] [code="java"]//actionA调用serviceA方法 actionA(){ serviceA(); } //actionB调用serviceB方法 actionB(){ ser...

三上 475

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WEB框架中异步实现方案

异步解决方案中除了JMS,AJAX,DWR等外的简单选择,就是多线程(具体的就是这个包:java.util.concurrent) 为实现在WEB中需要执行一些耗时的操作,例如发发邮件之类,但是又不能影响前台页面的响应这种需求,多线程中列举2个程序来解决。分别是立即执行和计划任务式的执行,2种执行都是在主线程外另外建个线程,故不影响主线程。 [code="java"]package Execu...

三上 411

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

maven-eclipse-plugin 与aspectj

问题1:最近一段时间以来,项目中使用maven-eclipse-plugin的eclipse:eclipse目标时比较恼人。pom里已经加入了aspectj的依赖,但生成的.classpath里却没有相应的classpathentry。 白衣提供的解决方法是:设置ajdtVersion为none [code="xml"] org.apache.maven.plugins...

三上 380

不用session、request传值的另一种解决方案

不用session、request传值的另一种解决方案: [code="java"]public class FakeSession { public static ThreadLocal messageSegment = new ThreadLocal() { public String initialValue() { return ""; ...

三上 319

解决ss3ex中mail集成bug

java1.4时发邮件是好的,由于ss3ex用的是java5的平台,集成spring2.5发邮件发不了,解决办法:先删后加 先删2个jar:geronimo-activation_1.1_spec-1.0.2.jar 和 geronimo-javamail_1.4_spec-1.3.jar 后加2个jar:activation.jar 和 mail.jar 附简单完整的代码: 1、建一...

三上 289

ss3ex中的自定义URL格式

自定义URL格式,本方法只是在模仿REST样的URL格式: 比如原先的某一URL为:http://localhost:8080/article/article!listItems.shtml?article.id=297ef77923fe21850123fe24f405000f, 现在改为了:http://localhost:8080/article/article/listItems/297...

三上 279
上一篇: dwr3 Reverse Ajax学习小结
下一篇: 值集合映射 annotation
iteye_6521
博客等级 码龄8年 0粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值