通过特定方法执行的代码在运行时更改 order_updates 标志

问题描述 投票:0回答:1

jpa.properties.hibernate.order_updates 在我的应用程序 yaml 中默认设置为 true。 我想将其设置为 false 以执行特定方法,这使得 JPA 存储库调用来获取并保存数据库数据。此方法是事务性的,并且当此标志为 true 时它如何抛出异常。如果它是假的,那么一切正常。我想使用现有的entityManager/entityManagerFactory 来更新更改后的属性。

我尝试更新会话工厂和实体管理器工厂上的 hibernate.order_updates 属性,但似乎没有任何效果。

更新此属性并申请执行的正确方法是什么?

我尝试更新会话工厂和实体管理器工厂上的 hibernate.order_updates 属性,但似乎没有任何效果。

更新此属性并申请执行的正确方法是什么?

hibernate spring-data-jpa
1个回答
0
投票

仅对一种方法禁用 order_updates 是不可能的,因为它违反了 有序锁定 原则。

“有序锁定”原则是一种通过确保所有线程或进程中的资源始终以一致的顺序锁定来防止死锁的策略。这种方法消除了循环等待条件的可能性,这是发生死锁的四个必要条件之一。 本质上,每个线程必须以预定的、一致的顺序获取资源。如果所有线程都遵守此规则,则可以避免循环依赖,因为没有线程必须等待序列中较早位置的另一个线程持有的资源。

例如,如果资源A和B必须被锁定,则所有线程都会先锁定A,然后再锁定B。这种方法广泛应用于操作系统和并发编程中,以管理多个锁定并有效防止死锁情况。

因此,

order_updates

参数只能对所有应用程序方法启用或不启用。 有关更多详细信息,请参阅

斯坦福大学的 CS 111:操作系统原理

讲座课程。

© www.soinside.com 2019 - 2024. All rights reserved.