论坛首页 Java企业应用论坛

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

浏览 5276 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-22  
spring配置事务,是否可以实现行级锁(for update)

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


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

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

   发表时间:2007-12-23  
select * from table where id =1 with ur;
0 请登录后投票
   发表时间: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
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics