【发布时间】: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