栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hibernate pessimistic lock repository DAO层加注解实现悲观锁 for update

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate pessimistic lock repository DAO层加注解实现悲观锁 for update

Hibernate pessimistic lock repository DAO层加注解实现悲观锁 for update
    • 场景
    • 解决
    • Refer

场景

DAO层框架: Hibernate
Database: PostgreSQL
需求: 悲观锁

SQL形式:select xxx from xxx where xx=xx for update
for update 会对where条件选中的记录加行级锁(where条件列必须加索引)

SQL形式已知,但问题在于:如何通过 Hibernate 拼接 for update 这段SQL?

在repository层方法上加一个@Lock注解即可。

解决
@Repository
public interface BookRepository implements JpaRepository {

	@Lock(LockModeType.PESSIMISTIC_READ)
	Book findByBookIdAndBookPrice(Integer bookId, Integer price);

	// 错误写法, HQL(Hibernate Query Language)不支持 for update 这个SQL细节。
	// @Query("select b.id, b.name, b.price from Book as b where b.id = :id and b.price = :price for update")
	// Book findByBookIdAndBookPrice(@param("id") Long id, @Param("price") Integer price);
}

生成的SQL中,会有for updateSQL段:

select id, name, price from book where id=? and price=? for update
Refer
  • Spring Data JPA进阶(五):事务和锁
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425632.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号