gpt4 book ai didi

java - 注入(inject) EntityManager 与。实体管理器工厂

转载 作者:IT老高 更新时间:2023-10-28 13:01:36 24 4
gpt4 key购买 nike

一个很长的问题,请多多包涵。

我们将 Spring+JPA 用于 Web 应用程序。我的团队正在讨论在 GenericDAO 中注入(inject) EntityManagerFactory (基于泛型的 DAO 由 APPFUSE 提供,我们不使用 JpaDaosupport出于某种原因)过度注入(inject) EntityManager。我们正在使用“应用程序管理的持久性”。

反对注入(inject) EntityManagerFactory 的论据是它太重了,因此不是必需的,EntityManager 可以满足我们的需要。此外,由于 Spring 将为每个 Web 请求创建一个新的 DAO 实例(我对此表示怀疑),因此不会出现任何并发问题,因为同一 EntityManager 实例由两个线程共享。

注入(inject) EFM 的理由是,它是一个很好的实践,总之,拥有一个工厂的句柄总是好的。

我不确定哪个是最好的方法,有人可以告诉我吗?

最佳答案

注入(inject) EntityManagerFactory 与 EntityManager 的优缺点都在 Spring 文档 here 中有详细说明。 ,我不确定是否可以改进。

话虽如此,你的问题中有些地方应该澄清一下。

...Spring would create a new instance of a DAO for every web request...

这是不正确的。如果你的 DAO 是一个 Spring bean,那么它就是一个单例,除非你通过 bean 定义中的 scope 属性来配置它。为每个请求实例化一个 DAO 会很疯狂。

The argument for injecting EMF is that its a good practice over all its always good to have a handle to a factory.

这个论点确实站不住脚。一般的良好实践表明,一个对象应该被注入(inject)完成其工作所需的最少协作者。

关于java - 注入(inject) EntityManager 与。实体管理器工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1310087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com