`
san586
  • 浏览: 134710 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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;

数据更新保存时注意:
页面提交数据,后台更新时,如果提交了ID字段,但是没有提交version字段,那么,后台默认为该数据还是一条新数据,所以不做更新操作,做插入操作。
解决方法有2种(根据群里讨论的结果):
1、提交ID字段时,同时提交version字段;
2、只提交ID字段,后台根据ID先get得到一个entity,然后set进其他的值,最后再保存。
分享到:
评论
1 楼 soliucheng 2010-12-03  
在修改数据的时候不需要吧,他会自己把版本号跟上。
Hibernate:
    update
        book
    set
        version=?,
        bookName=?,
        money=?,
        printTime=?
    where
        id=?
        and version=?
我个人觉得如果用乐观锁再加上一个
<property name="hibernate.connection.isolation">2</property>
效果会更好!

相关推荐

    ss3ex中使用UrlRewrite

    在SS3EX框架中,UrlRewrite的使用是为了解决传统URL模式中参数过多、过于复杂的问题,提供一种更简洁、更美观的URL表示方式。下面将详细介绍SS3EX中使用UrlRewrite的相关知识点。 首先,URL重写主要是通过配置文件...

    发布ss3ex的maven版本,取名叫sango吧

    总结来说,这个项目是关于将ss3ex转换成一个支持Maven的Java项目,便于管理和构建,同时也可能提供了一种工具,帮助开发者在他们的工作中更高效地使用或集成ss3ex。通过博客链接提供的信息,读者可以深入了解这个...

    springside3+ext源代码

    在项目中,Spring与Hibernate结合使用,实现了数据持久层的高效管理。JPA接口提供了统一的数据访问API,降低了与具体数据库系统的耦合度。同时,通过Struts2的拦截器和动作设计,实现了业务逻辑和视图的分离,提高了...

    SSD3ex2答案

    2007卡耐基软件工程网路教材 SSD3ex2答案

    ssd3ex5练习5

    ssd3ex5源码,自己写的,保证100分!

    SSD3 EX1-7

    在标签中,“SSD3”可能是课程的代号,而“JAVA”则指明了编程语言,这意味着我们将探讨如何使用Java来处理与SSD相关的任务。Java是一种广泛使用的、跨平台的编程语言,非常适合开发系统级软件,包括SSD控制器或管理...

    maven版ibatis

    博客链接(https://ss3ex.iteye.com/blog/436901)可能包含了关于如何在Maven项目中集成和配置iBatis的实践教程,读者可以通过阅读该博客获取更具体的步骤和示例代码。 综上所述,"maven版ibatis"的主题涵盖了Maven...

    Sizzle v4.0.0.59

    Sizzle 是一套前端用智能来处理模块和组件依赖关系的框架。 它遵循 CommonJS 的运行规范来完成对各个模块的动态加载。...Sizzle 框架将被使用在 PJBlog4 新版本中,让后台更加代码逻辑化和模块化。

    AIT存储助力盲人护助中心数据保护成功应用案例

    它以其高容量、高速度、低成本和可靠性获得了广泛应用,尤其是在非营利组织中,如科罗拉多盲人护助中心。 1. **高容量与高速度**: AIT-3Ex是Sony AIT系列的升级版本,提供了显著的存储性能提升。在未压缩状态下,...

    JBoss Seam Tutorial

    在Eclipse中创建一个新的项目,例如命名为ejb3ex。然后,在Package Explorer中查看项目的结构。 #### 步骤9:配置Hibernate 选择File -&gt; New -&gt; Other,然后选择Hibernate Configuration File,填写适当的值,添加...

    matlab开发-用matlab解题

    例如,`ch3ex6.m`, `ch3ex5.m`, `ch2ex3.m`, `ch4ex5a.m` 和 `ch2ex4.m` 可能是书中的练习题,每个对应一个特定章节的实例,可能涵盖了不同主题的MATLAB编程实践。 3. **图像处理**: 标签"图像处理与计算机视觉...

    派特莱LCE-A 多层信号灯2D CAD Pole M2.pdf

    派特莱LCE-A 多层信号灯2D CAD Pole M2pdf,特点:高节能无需维护的LED多层信号灯,体积小可识别性强,特别匹配于各类中小型设备的外观设计。派特莱特有的混合棱镜切割灯罩,消除了可能存在的视觉盲点,大大提高了远...

    OPPO r11 root 教程

    Root权限是指在Android操作系统中获取最高管理员权限,允许用户对系统的底层进行修改和控制。对于喜欢自定义手机系统的用户来说,Root权限能够提供更多的自由度和可能性。但需要注意的是,Root操作可能会导致手机...

    新健太郎通信协议(中文) - 副本1

    2. **适用**:此协议适用于所有使用HBP-9021/9020的通信场景,无论是在设备的开发阶段还是实际操作过程中。 3. **连接构成**:在PC与主CPU进行通信时,它们通过RS232C串行通信端口相连,具体是通过UART接口的TxD...

    练习二(龙版)答案.doc

    3. **期望(数学期望)**(Expectation):随机变量的期望表示其平均值,如第4题中的EX=,第9题中的EX=np=1.6,第13题中的E(z)=3EX-2。 4. **方差(Variance)**:随机变量的方差衡量其数值离散程度,如第4题中的DX...

    C++实现显示MP3文件信息的方法

    在这个示例中,使用了名为`libZPlay`的库来实现这一功能。`libZPlay`是一个开源的跨平台库,它提供了音频播放、解码和处理的能力,同时也支持读取MP3文件的ID3标签。 ID3标签是附加在MP3文件中的元数据标准,用于...

    新视角研究生英语读说写1部分答案

    【压缩包子文件的文件名称列表】中的文件可能分别对应课程的不同单元,如BI-U03_3EX.ppt可能是第三单元的练习讲解或答案解析,BI-U04_3EX.ppt可能是第四单元的内容。这些PPT文件可能包含了课件展示、习题解析、语言...

    21版高考数学人教A版浙江专用大一轮复习核心考点·精准研析 3.4.2 导数与函数零点 含解析.doc

    对于函数 \( g(x) = f(x) - 3ex - m \) 有两个零点的问题,意味着 \( g(x) \) 的图像与 \( x \) 轴有两个交点,这需要通过分析 \( g(x) \) 的导数,判断其单调性,以及端点和极值点的函数值来确定实数 \( m \) 的...

Global site tag (gtag.js) - Google Analytics