JPA entityManagerFactory.createEntityManager() 在getter,什么时候到cache/reuse?

JPA entityManagerFactory.createEntityManager() in a getter, when to cache/reuse?

我有一个需要实现的抽象方法,return一个entityManager。

通常,使用 Spring 您可以使用持久性上下文注入 enititymanager,但是,我现在没有这个选项。

我可以访问 entitymanagerfactory,但我真的不希望 getEntityManager 为每次调用 return 一个新实例。有时,这个方法可能会被同一个方法调用多次,所以我想看看一些缓存原理。

我相信 Spring 也不是 return 一个新实例。即使我是@PersistenceContext private EntityManager entitymanager;

那么我该如何处理呢?

您需要使用 ThreadLocal 存储来缓存第一个检索到的 EntityManager。

只要确保你clear the storage一旦你离开你的交易边界。