我应该避免多次创建EntityManagerFactory

时间:2016-07-13 15:48:59

标签: oracle jpa persistence entitymanager

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

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

1 个答案:

答案 0 :(得分:1)

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