`
viei
  • 浏览: 5154 次
  • 性别: 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;

相关推荐

    spring3 struts2 Mybatis3 组件注解 事务注解 实例

    Mybatis3支持注解方式的SQL映射,如`@Select`、`@Insert`、`@Update`和`@Delete`,这使得SQL语句可以直接写在Mapper接口的方法上,降低了XML配置的繁琐。同时,Mybatis3也支持使用`@Transactional`注解进行局部事务...

    分布式锁原理讲解视频资料

    1. 基于数据库的分布式锁:利用数据库的事务和行级锁机制,例如MySQL的SELECT FOR UPDATE语句。这种方式简单易懂,但可能面临数据库性能瓶颈。 2. 基于缓存的分布式锁:使用Redis等内存数据库,通过SETNX命令实现...

    MySQL事务剖析1

    在Spring框架中,可以使用@Transactional注解标记在方法级别上开启事务管理,Spring会自动处理事务的边界,异常发生时自动回滚,正常执行则提交事务。 5. 事务的隔离级别: 隔离级别决定了并发事务之间的可见性,...

    基于springmvc高并发秒杀系统

    开发环境:IDEA,Tomcat,MySQL,Redis 项目构建:Maven 软件环境:SSM(SpringMVC,Spring,MyBatis) ...MySQL:事务 + 行级锁 多用户秒杀 ——> Update库存数量 四、功能模块 秒杀接口暴露(Exposer,封装的

    互联网高频Java后端面试题20道(适合1~3年)V1.0.57.docx

    此外,还可以使用行级锁、读写分离、分库分表等策略来提高并发处理能力。 问题 12:什么是缓存穿透、缓存雪崩和缓存击穿?如何避免这些问题?答案:缓存穿透是指查询一个不存在的数据,导致缓存和数据库都未命中;...

    BAT面试题大全进大厂必看630页精品2022年最新资源

    【Spring事务管理】 Spring提供了编程式和声明式事务管理,通过TransactionManager和@Transactional注解,方便地在Java应用中处理事务。在大型项目中,理解并熟练掌握这些知识,将有助于顺利通过BAT等大厂的面试,...

    搜狐&&美团旅行面试题.docx

    - MySQL中的悲观锁通常通过行级锁实现,如`SELECT ... FOR UPDATE`语句。 6. **MySQL的乐观锁机制** - MySQL中的乐观锁通常通过版本号或时间戳来实现。在更新记录时检查版本号是否发生变化来判断数据是否被其他...

    JAVA面试题.zip

    - Spring事务管理:编程式事务、声明式事务(基于注解和XML配置)。 - Spring Boot:自动配置、起步依赖、Actuator监控。 【Spring Boot】 Spring Boot简化了Spring应用的初始搭建以及开发过程。主要面试点可能有...

    springMVC+MySql

    6. **注解驱动开发**:Spring MVC 鼓励使用注解来简化配置,如 `@Controller`、`@Service`、`@Repository`、`@Autowired` 等。 7. **拦截器(Interceptor)**:可以自定义拦截器,在请求处理前后执行特定操作,如...

    很全的java面试资料

    - **事务与锁**:ACID特性,事务的隔离级别,行级锁、表级锁、乐观锁、悲观锁的区别。 - **数据库优化**:查询优化,索引优化,数据库设计的范式理论。 3. **J2EE相关**: - **Servlet**:理解Servlet生命周期,...

    java分类整理的面试题

    3. **事务和锁**:理解ACID特性,掌握行级锁、表级锁和读写锁的概念。 4. **数据库设计**:理解ER模型,会进行关系数据库的规范化设计。 5. **数据库优化**:了解查询优化,包括索引优化、SQL优化和数据库架构优化。...

    mybatis3.5jar包+mysqljar包.zip

    8. **主从复制**:MySQL支持主从复制,通过复制数据到多个从服务器,可以实现高可用性和负载均衡。 综合来看,这个压缩包包含了开发Java应用时所需的MyBatis 3.5和MySQL的相关库文件,是搭建Java后端与MySQL数据库...

    java面试之葵花宝典

    4. **事务与锁**:理解ACID(原子性、一致性、隔离性、持久性)特性,了解行级锁、表级锁和乐观锁等概念。 5. **性能优化**:掌握SQL优化技巧,如避免全表扫描,使用合适的JOIN操作,以及数据库参数调优。 以上是...

    java面试题,ava核心知识 集合框架、JVM机制、多线程与并发框架、网络协议、SSM框架、MySQL、分布式、微服务等

    6. **MySQL**:MySQL是一种流行的开源关系型数据库管理系统,掌握SQL语句(SELECT、INSERT、UPDATE、DELETE),索引的使用,事务处理(ACID特性),以及存储引擎(InnoDB支持行级锁定,MyISAM适合只读场景)是必要的...

    java面试笔试宝典

    - **事务与锁**:理解ACID特性,了解行级锁、表级锁、读写锁的概念。 - **索引优化**:学习如何创建和使用索引,提高查询效率。 7. **框架应用** - **Spring框架**:理解Ioc和AOP原理,熟悉Spring Boot的使用。 ...

    当学习MySQL时,一个清晰的学习路线可以帮助你更系统地掌握知识和技能

    - **InnoDB**: 支持事务处理、行级锁和外键。 - **MyISAM**: 不支持事务,但读取速度快。 - **MEMORY**: 将数据存储在内存中,适用于临时表。 **3. 工具与集成** - **使用 MySQL 管理工具**: - Navicat: 图形...

    Java+数据库面试题.zip

    - **InnoDB存储引擎**:行级锁定,事务支持。 - **MyISAM**:快速读取,不支持事务。 - **主从复制**:数据备份,负载均衡。 - **分区与分表**:提高查询性能。 - **慢查询日志**:定位性能瓶颈。 5. **Oracle...

    lightbnb:基于AirBnB服务器结构的Lighthouse LabsSQL和数据库项目

    这个项目的主要目的是让学生和开发者能够深入理解如何在实际环境中设计、实现和优化SQL查询,以及如何构建和管理复杂的数据库系统。 【SQL基础】 SQL(Structured Query Language)是用于管理和处理关系数据库的...

Global site tag (gtag.js) - Google Analytics