并发控制要考虑什么?什么是锁机制
答案:2 悬赏:50
解决时间 2021-02-13 19:16
- 提问者网友:无心恋土
- 2021-02-13 13:40
并发控制要考虑什么?什么是锁机制
最佳答案
- 二级知识专家网友:劳资的心禁止访问
- 2021-02-13 14:00
a、Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次, 然后就丢弃。 如果一个Session 实例允许共享的话,那些支持并发运行的,例如Http request,session beans将会导致出现资源争用。 如果在Http Session中有hibernate的Session的话,就可能会出现同步访问Http Session。只要用户足够快的点击浏览器的“刷新”, 就会导致两个并发运行的线程使用同一个Session。 b、多个事务并发访问同一块资源,可能会引发第一类丢失更新,脏读,幻读,不可重复读,第二类丢失更新一系列的问题。 解决方案:设置事务隔离级别。 Serializable:串行化。隔离级别最高 Repeatable Read:可重复读 Read Committed:已提交数据读 Read Uncommitted:未提交数据读。隔离级别最差 设置锁:乐观锁和悲观锁。 乐观锁:使用版本号或时间戳来检测更新丢失,在 的映射中设置 optimistic-lock=all可以在没有版本或者时间戳属性映射的情况下实现 版本检查,此时Hibernate将比较一行记录的每个字段的状态 行级悲观锁:Hibernate总是使用数据库的锁定机制,从不在内存中锁定对象!只要为JDBC连接指定一下隔 离级别,然后让数据库去搞定一切就够了。类LockMode 定义了Hibernate所需的不同的锁定级别:LockMode.UPGRADE,LockMode.UPGRADE_NOWAIT,LockMode.READ;
全部回答
- 1楼网友:一个很哇塞的汉子
- 2021-02-13 15:36
使用 sql去搞定;
比如这样
update order status='success' where id=11 and status='waitmsg'
然后判断 更新记录条数如果是1,就表示这次更新了, 如果是0,表示么有更新
最后根据你更新条数 1 或 0 处理是否进行后续的处理。
经验哦。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯