Java 使用spring数据jpa和rest时,防止hibernate在启动时生成所有查询计划
我正在使用spring数据jpa、rest、hibernate entitymanager 4.3.6和spring引导,初始化太慢。超过100万 Hibernate遍历所有属性,并在启动时生成查询 我怎样才能防止这种情况 日志: Bean定义: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
@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,它也不起作用