NullPointerException 与 Hibernate criteriaQuery 间歇性发生
NullPointerException happening intermittently with Hibernate criteriaQuery
我正在多线程环境中开发一个 springboot 应用程序,我使用 Hibernate 和 javax.persistence.EntityManager 来访问数据库。我有单独的 HikariPools 用于读取和写入查询。
这里,多个线程在从数据库(所有读取查询)执行读取操作时使用单个读取连接(因为我已经自动连接了 entityManager 而不是使用 PersistanceContext)。类似地,多个线程也会在 writeEntityManager 的帮助下写入 db,其中所有线程都使用单个连接。
我遇到了 AbstractLockUpgradeEventListener.upgradeLock 的问题。这是间歇性发生的,无法找到确切的根本原因。
几个假设:-
- 数据库利用率达到 100%。(这可能会给这个问题带来优势)
- 在执行任何写查询之前应用锁,如果一个线程花费的时间超过足够的时间,线程就会变得饥饿
任何人都可以在这里提出一些建议 w.r.t 设计或实施策略或实际根本原因。
这只会偶尔发生一次
Hibernate EntityManager 不是线程安全的,您不能在多线程中使用它。
事实上,EntityManager 和加载的对象不能在多个线程中使用
https://discourse.hibernate.org/t/hibernate-and-multithreading/289
我正在多线程环境中开发一个 springboot 应用程序,我使用 Hibernate 和 javax.persistence.EntityManager 来访问数据库。我有单独的 HikariPools 用于读取和写入查询。
这里,多个线程在从数据库(所有读取查询)执行读取操作时使用单个读取连接(因为我已经自动连接了 entityManager 而不是使用 PersistanceContext)。类似地,多个线程也会在 writeEntityManager 的帮助下写入 db,其中所有线程都使用单个连接。
我遇到了 AbstractLockUpgradeEventListener.upgradeLock 的问题。这是间歇性发生的,无法找到确切的根本原因。
几个假设:-
- 数据库利用率达到 100%。(这可能会给这个问题带来优势)
- 在执行任何写查询之前应用锁,如果一个线程花费的时间超过足够的时间,线程就会变得饥饿
任何人都可以在这里提出一些建议 w.r.t 设计或实施策略或实际根本原因。
这只会偶尔发生一次
Hibernate EntityManager 不是线程安全的,您不能在多线程中使用它。
事实上,EntityManager 和加载的对象不能在多个线程中使用
https://discourse.hibernate.org/t/hibernate-and-multithreading/289