【问题标题】:Should I avoid creating EntityManagerFactory too many times我是否应该避免多次创建 EntityManagerFactory
【发布时间】:2016-07-13 15:48:59
【问题描述】:

我正在使用 JPA 将记录保存到 Oracle 数据库。每次我运行应用程序时,它都会转到特定目录并解析其中的每个文件并加载到表中。通常有数千个文件需要处理。

每次我处理文件和插入记录时都会创建一个新的 EntityManagerFactory。因此,EMF 每次运行都会打开数千次。当我调试它时,我发现创建 EMF 是最耗时的步骤,它占用了超过 90% 的运行时间。平均而言,创建一个新的 EMF 大约需要 2-3 秒。也许我应该在文件迭代开始之前在应用程序开始时打开一次 EMF 连接?让 EMF 一直打开是个好习惯吗?

【问题讨论】:

  • EntityManagerFactory 是线程安全的,正如您所发现的,在获取、加载和验证持久性单元所需的一切方面有很多设置。 EntityManagers 是轻量级的,但不是线程安全的 - 这些对象应该在需要时获取,而 EMF 集中/静态加载。
  • @Chris 感谢您解释差异。请给它一个答案,我会关闭它。

标签: oracle jpa persistence entitymanager


【解决方案1】:

摘自我的评论: EntityManagerFactory 是线程安全的,正如您所发现的,在获取、加载和验证持久性单元所需的一切方面有很多设置。 EntityManagers 是轻量级的,但不是线程安全的 - 这些对象应该在需要时获取,而 EMF 集中/静态加载。

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 2011-05-05
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2011-11-16
    相关资源
    最近更新 更多