@Transactional 锁表吗?关于Spring注解@Transactional和SQL for update 的一些理解
@Transactional 锁表吗?关于Spring注解@Transactional和SQL for update 的一些理解
工作前几年中,一直接触的是JDBC原生的事务处理方式。
1. 获取 connection
2. try {
con = getDBConnection();
// sql for update 锁A表, B表。。表记录
//增删改查
多个业务处理,
con.commit()
//最后提交
3. } catch Exception {
con. 回滚
}
4. finally {
con.close();
}
后期用了spring 后, @Transactional 实际上代替了try catch finally . 还有 con获取,提交,回滚的操作。
但是 锁表记录的动作,并不在 这个注解的职责里。
所以,在处理关键事务时,还是得在 dao层 更新记录前,查询记录加行级锁的。 俗称悲观锁, 或者 不加锁使用version判断。俗称乐观锁。
来搞一下的。
这两个是不同的职责范围,即:@Transactional注解不包含for update.
。如此。而已。
博客地址: https://www.cnblogs.com/java2sap/
世界丰富多彩,知识天花乱坠。
---如果有帮到你,点个赞吧~
世界丰富多彩,知识天花乱坠。
---如果有帮到你,点个赞吧~
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步