我有一个JPA环境,它有一个应用程序管理的EntityManager。我手动创建entityManagerFactory并从中创建EntityManager。我想在多个线程中使用相同的EntityManager。文档说EntityManager不是线程安全的,但我的所有操作都只是读取,并且不会通过EntityManager进行写操作。我还对缓存中的数据进行了超时以确保一致性。在这种情况下,是否可以跨线程使用相同的EntityManager实例?或者在跨线程使用相同的EntityManager时会有任何副作用/错误数据。
由于
答案 0 :(得分:0)
可以肯定的是,只需使用EntityManager
锁定synchronized
实例即可。
所以不要写
em.persist(...);
写
synchronized (em) {
em.persist(...);
}