Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于大型模式,EntityManagerFactory的创建速度较慢_Java_Jpa_Eclipselink_Entitymanager - Fatal编程技术网

Java 对于大型模式,EntityManagerFactory的创建速度较慢

Java 对于大型模式,EntityManagerFactory的创建速度较慢,java,jpa,eclipselink,entitymanager,Java,Jpa,Eclipselink,Entitymanager,我试图创建一个Java应用程序,将旧模式迁移到新模式。我选择Java的原因如下: 我需要执行数据卫生 需要执行业务逻辑以默认以前的空/坏数据 无论如何,我们的服务器代码都使用JPA。在迁移中使用此选项将确保数据迁移具有正确的完整性约束 我的问题是;当我增加JPA实体类的数量时,实例化EntityManager需要很长时间。我能做些什么来加快速度吗 persistence.xml <?xml version="1.0" encoding="UTF- <persistence ver

我试图创建一个Java应用程序,将旧模式迁移到新模式。我选择Java的原因如下:

  • 我需要执行数据卫生
  • 需要执行业务逻辑以默认以前的空/坏数据
  • 无论如何,我们的服务器代码都使用JPA。在迁移中使用此选项将确保数据迁移具有正确的完整性约束
我的问题是;当我增加JPA实体类的数量时,实例化EntityManager需要很长时间。我能做些什么来加快速度吗

persistence.xml

<?xml version="1.0" encoding="UTF-
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="puMigration" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.myCompany.MyEntity</class>
    . . .
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
  </persistence-unit>
</persistence>

您必须寻找能够分析所需时间的工具。EclipseLink延迟加载持久性单元,因此您可以使用EclipseLink.deploy-on-startup属性控制此处理何时发生,但这只会将处理移动到工厂创建,而不是第一个创建的EntityManager。2分钟可能不会太多-这完全取决于您的机器、实体数量、资源和配置选项。例如,您使用的是编织吗?您的意思是EntityManagerFACTORY的创建速度慢,而不是问题的标题says@NeilStockton-你是对的,整个管理工厂是需要2分钟的生产线。
Map<String, String> properties = new HashMap<>();
properties.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
properties.put("javax.persistence.jdbc.url", url);
properties.put("javax.persistence.jdbc.user", username);
properties.put("javax.persistence.jdbc.password", password);

// TODO Refactor, this call takes 2 minutes.  Why?
EntityManagerFactory emf = Persistence.createEntityManagerFactory("puMigration", properties);
entityManager = emf.createEntityManager();