注入EntityManagerVs 实体管理器工厂

Spring文档在此处详细说明了注入EntityManagerFactory与EntityManager的优缺点,我不确定是否可以对此进行改进。

话虽如此,您的问题中有一些要澄清的地方。

… Spring将为每个Web请求创建一个DAO的新实例…

这是不正确的。如果您的DAO是Spring bean,则它是单例,除非您通过scopebean定义中的属性对其进行了配置。为每个请求实例化DAO会很疯狂。

注入EMF的理由是,对于拥有工厂的控制权而言,这是一种良好的实践做法。

这种说法并没有真正成立。一般的良好做法是,应向对象注入完成工作所需的最少协作者。

解决方法

一个很长的问题,请忍受我。

我们将Spring +
JPA用于Web应用程序。我的团队在讨论如何在注入EntityManagerFactoryGenericDAO(基于泛型的东西对AppFuse中提供的线DAO,我们不使用JpaDaosupport过的注射某种原因)EntityManager。我们正在使用“应用程序管理的持久性”。

反对注入a的论点EntityManagerFactory是它太重了,因此不是必需的,这EntityManager就是我们需要的。而且,由于Spring将为每个Web请求创建一个DAO的新实例(我对此表示怀疑),因此不会有任何并发​​问题,因为在同一EntityManager实例中,两个线程共享该线程。

注入EFM的理由是,对于拥有工厂的人来说,这始终是一个很好的实践。

我不确定哪种方法最好,请问有人可以启发我吗?

你可能想看:
分享给朋友: