`
viei
  • 浏览: 5103 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

spring配置事务,是否可以实现行级锁(for update)

阅读更多
spring配置事务,是否可以实现行级锁(for update)

通过配置传播行为,隔离级别应是不行的把?
我现在的做法是在dao里面直接用悲观锁来弄的
觉的这样太好,如果这个查询方法有时候需要实现行级锁有时候不需要我是否还要写两个不同的方法


比如我每次
select * from table where id=1
取一条商品信息,然后扣款,配送,最后把这个条记录修改为已卖出。
为了防止脏读导致通过select * from table where rownum=1 for update行级锁定

但同时也需要用户可以通过
select * from table where id=1来查询某条制定的道具信息

分享到:
评论
2 楼 blowfisher 2007-12-24  
由容器提供的事务管理,是达不到细粒度的行级锁需求的, 这个跟底层数据库实现有关。
不同是DB并发控制的机制不同,有的数据库根本还没有提供行级锁,那就完全没法谈起如何针对特定行获得排他或者共享锁了

JDBC+SQL 操作行级锁是王道

DAO方法可以变通一点嘛,比如: findItem(long ID, boolean needLock);

关于行锁可以参考:
http://www.pgsql.org.cn/doc/explicit-locking.html#LOCKING-ROWS
http://www.pgsql.org.cn/doc/sql-select.html#SQL-FOR-UPDATE-SHARE
1 楼 Godlikeme 2007-12-23  
select * from table where id =1 with ur;

相关推荐

Global site tag (gtag.js) - Google Analytics