RoyalJsp 2009-04-09 12:21
浏览 245
已采纳

SSH2的事务并发怎么控制?

小弟对SSH掌握的不好,还在摸索中使用
我以前用hibernate3+struts2做项目,事务的控制由hibernate3来完成,比如用hibernate的乐观锁(version控制)

现在改用spring2.5+hibernate3+struts2, 我看了下spring2.5的reference,是不是事务控制只需要有在spring里申明,不用使用hibernate3的锁机制就可以自己控制并发呢. Spring2.5可以自己搞定事务并发而我们自己只需要去声明事务就可以吗?

谢谢, 希望哪位帮个忙!
[b]问题补充:[/b]
魔力猫咪:对于你的回答我还是比较迷糊耶.
1.如果用Hiberante3.2, 比如Hiberante3.2, 是不是并发控制是自动的?(我看reference上说得"自动版本化").
2.对于魔力猫咪的回答.是不是可以这样理解:spring2在一遇到异常就会自动回滚,就相当于Hiberante的version控制?
3.如果用SSH2框架,不设定事务隔离层级,spring2还是会自己处理并发?

呵呵,刚在摸索阶段,希望大家指点.感激....

[b]问题补充:[/b]
魔力猫咪: 谢谢你中肯的回答>
我现在想要知道的是: 假如我不用spring2, 直接用hibernate3.2,怎么控制事务并发? 乐观锁是没有真正作到并发,这种情况下我的迷惑是:按照hibernate3.2的工作手册说得,有自动version控制,所以我门不需要在POJO里定义version字段,然后用 去映射,对吗?
如果我用到了spring2.按照你的意思就说,sping2只是申明事务而已,并做不到控制并发,实际上还是得由hibernate3.2来控制并发,对吗?那么假如不用hibernate3,spring2本身能控制事务并发吗?
希望给我详细点的回答, 非常盼望.
[b]问题补充:[/b]
老兄,非常感激你的指点,不过我觉得你把我看高了,我其实就是想知道具体如果控制事务并发,这些概念上的东西我根本无法理解,我就是想知道,所谓的乐观锁,是不是一定要这样做:
1.在pojo定义version字段,数据库定义version字段,然后在映射文件?(这好像是hibernate2的做法)
2.到了hibernate3.2后,是不是不需要像1那样做了?
3.你提到的"乐观锁的所谓自动,是只要你定义了乐观锁,Hibernate就会每次在数据变更的时候给你自动增加",如何定义?
4.是不是可以这样理解:不管你用不用spring,只要你用hibernate的乐观锁来控制并发,是不是就得按照1或者3那样做?

请您给我一个具体的做法,抽象的概念实在是理解不了,误见笑哈...

  • 写回答

4条回答

  • iteye_12540 2009-04-14 10:30
    关注

    乐观锁必须你告诉框架你要用才可以。现在的JPA也要你定义@Version标签。自动开乐观锁的也有,Grails的GORM就是自动给你增加了乐观锁。自动给每个Domain的数据库对应表加上version字段。所以你使用HIbernate必须按照1的写才有乐观锁。
    乐观锁的自动增加就是你每修改一次,乐观锁就会根据定义乐观锁的不同(整形和时间型),进行变更。整形乐观锁会在你每次修改后加1,时间型会把修改时间写入字段。
    4是的。必须你来写。所谓自动,就是不用你每次要自己修改Version字段而已。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办