我有一个 JPA 环境,其中有一个应用程序管理的 EntityManager。我手动创建entityManagerFactory 并从中创建EntityManager。我想在多个线程中使用相同的 EntityManager。文档说EntityManager不是线程安全的,但是我的所有操作都只会通过EntityManager进行读取,而不会发生写入。我还对缓存中的数据设置了超时,以确保一致性。在这样的场景下,跨线程使用同一个EntityManager实例可以吗?或者跨线程使用相同的 EntityManager 是否会产生任何副作用/错误数据。
谢谢
最佳答案
可以肯定的是,只需使用 synchronized
锁定 EntityManager
实例即可。
所以不要写
em.persist(...);
写
synchronized (em) {
em.persist(...);
}
关于java - 跨多个线程使用同一个EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769710/