Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 使用spring数据jpa和rest时,防止hibernate在启动时生成所有查询计划_Java_Spring_Hibernate_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

Java 使用spring数据jpa和rest时,防止hibernate在启动时生成所有查询计划

Java 使用spring数据jpa和rest时,防止hibernate在启动时生成所有查询计划,java,spring,hibernate,spring-data-jpa,spring-data-rest,Java,Spring,Hibernate,Spring Data Jpa,Spring Data Rest,我正在使用spring数据jpa、rest、hibernate entitymanager 4.3.6和spring引导,初始化太慢。超过100万 Hibernate遍历所有属性,并在启动时生成查询 我怎样才能防止这种情况 日志: Bean定义: @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) { LocalContainerEntityM

我正在使用spring数据jpa、rest、hibernate entitymanager 4.3.6和spring引导,初始化太慢。超过100万

Hibernate遍历所有属性,并在启动时生成查询

我怎样才能防止这种情况

日志:

Bean定义:

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {


    LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
    em.setDataSource(dataSource);
    em.setPackagesToScan("com.ceram1.openauth.persistence.model");

    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    em.setJpaVendorAdapter(vendorAdapter);
    em.setJpaProperties(additionalProperties());
    em.setSharedCacheMode(SharedCacheMode.ALL);
    return em;
}
属性配置:

    p.setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false");
    p.setProperty("hibernate.query.startup_check", "false");
    p.setProperty("hibernate.show_sql", "true");
    p.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");
    p.setProperty("jadira.usertype.autoRegisterUserTypes", "true");
    p.setProperty("hibernate.connection.CharSet", "utf8");
    p.setProperty("hibernate.connection.characterEncoding", "utf8");
    p.setProperty("hibernate.connection.useUnicode", "true");
    p.setProperty("hibernate.cache.use_second_level_cache", "false");
    p.setProperty("hibernate.cache.use_query_cache", "false");

可以通过为不希望在启动时为其生成查询的每个类放置注释实体(dynamicInsert=true,dynamicCupDate=true)来实现这一点。这是一个冗长的编码部分。但是如果你愿意的话,这会很有帮助

参考:Hibernate食谱书

但这在运行时存在性能问题:


这是另一个链接:

对不起,问题标题错了。由于jadira(hibernate自定义类型),速度很慢


现在我注意到生成查询非常快。。(Hibernate比我快得多)

这不是bug,而是特性。所以,当运行时无法生成查询时,您可以确保不会感到不愉快的惊讶;而且在服务器启动后可以节省时间…我知道,但我想禁用它以加快开发和测试。感谢提供有用的信息,但我无法将其应用到我的项目中。即使我使用4.3.6.Final,它也不起作用