我应该避免多次创建 EntityManagerFactory
Should I avoid creating EntityManagerFactory too many times
我正在使用 JPA 将记录保存到 Oracle 数据库。每次我 运行 应用程序时,它都会转到特定目录并解析其中的每个文件并加载到表中。通常有数千个文件需要处理。
每次处理文件和插入记录时都会创建一个新的 EntityManagerFactory。因此,EMF每运行被打开数千次。当我调试它时,我发现创建 EMF 是最耗时的步骤,它占用了 运行 时间的 90% 以上。创建一个新的 EMF 平均需要大约 2-3 秒。也许我应该在文件迭代开始之前在应用程序开始时只打开一次 EMF 连接?一直打开 EMF 是好习惯吗?
摘自我的评论:
EntityManagerFactory 是线程安全的,正如您所发现的,在获取、加载和验证持久性单元所需的一切方面有很多设置。 EntityManagers 重量轻但不是线程安全的 - 这些对象应该在需要时获取,而 EMF centrally/statically 加载。
我正在使用 JPA 将记录保存到 Oracle 数据库。每次我 运行 应用程序时,它都会转到特定目录并解析其中的每个文件并加载到表中。通常有数千个文件需要处理。
每次处理文件和插入记录时都会创建一个新的 EntityManagerFactory。因此,EMF每运行被打开数千次。当我调试它时,我发现创建 EMF 是最耗时的步骤,它占用了 运行 时间的 90% 以上。创建一个新的 EMF 平均需要大约 2-3 秒。也许我应该在文件迭代开始之前在应用程序开始时只打开一次 EMF 连接?一直打开 EMF 是好习惯吗?
摘自我的评论: EntityManagerFactory 是线程安全的,正如您所发现的,在获取、加载和验证持久性单元所需的一切方面有很多设置。 EntityManagers 重量轻但不是线程安全的 - 这些对象应该在需要时获取,而 EMF centrally/statically 加载。