【问题标题】:Does Spring jpa pessimistic/optimistic locking on row apply to other applications accessing the table rowSpring jpa对行的悲观/乐观锁定是否适用于访问表行的其他应用程序
【发布时间】:2022-07-08 21:36:48
【问题描述】:

我让 appA 在一行上使用写锁进行表访问。 当它持有锁时,

部署在另一台服务器上的另一个 appB 是否能够更新同一行。 或者 我的 sql 客户端(比如 sqlYog)能够手动更新行

我的问题是了解持久性管理器是否能够阻止来自其他应用程序的其他手动或编程更新,这些应用程序不在持有锁的同一应用程序上下文中。

【问题讨论】:

    标签: spring-data-jpa spring-data persistence spring-transactions


    【解决方案1】:

    从数据库的角度来看,谁尝试更新数据并不重要。它可能是另一个应用程序,甚至是您的第一个应用程序实例中的另一个线程。

    如果您对一行进行了乐观锁,那么任何人都可以修改该行,因为乐观锁不会阻止并发修改。

    乐观锁定是一种用于 SQL 数据库应用程序的技术,它在选择和更新或删除行之间不持有行锁。编写该应用程序是为了乐观地假设未锁定的行在更新或删除操作之前不太可能发生变化。

    通过:https://www.ibm.com/docs/en/db2/11.5?topic=overview-optimistic-locking

    相反,悲观锁定机制涉及在数据库级别锁定实体。如果您对给定行执行悲观锁定,那么没有人(另一个应用程序实例、您手动管理的数据库客户端等)将能够修改该行中的数据。

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      相关资源
      最近更新 更多