2017-03-16 110 views
1

在遵循各種示例並閱讀spring引導文檔後,我仍然無法啓用hibernate統計信息。我正在設置application.properties文件中的屬性。通過集成測試或Application.java運行彈簧引導應用程序不會產生統計信息。我的application.properties文件。Spring引導application.properties hibernate.generate_statistics

spring.datasource.jdbcUrl=jdbc:postgresql://localhost:5432/postgres 
    spring.datasource.username = postgres 
    spring.datasource.password = password 

    spring.datasource.driver-class-name=org.postgresql.Driver 
    spring.datasource.platform=postgres 

    spring.datasource.testWhileIdle = true 
    spring.datasource.validationQuery = SELECT 1 

    spring.jpa.properties.hibernate.show_sql=true 
    spring.jpa.properties.hibernate.format_sql=true 
    spring.jpa.properties.hibernate.generate_statistics=true 

    logging.level.org.hibernate.SQL=TRACE 
    logging.level.org.hibernate.stat=TRACE 

    logging.file=transaction-app.log 

的logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <include resource="org/springframework/boot/logging/logback/defaults.xml" /> 
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/> 
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" /> 
    <root level="INFO"> 
     <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

我的集成測試

@RunWith(SpringRunner.class) 
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
public class SqlMappingTest { 

    @Autowired 
    PlanService planService; 

    @org.junit.Test 
    public void findAll() { 
     List<Plan> plans = planService.findAll(); 
     Assert.assertEquals(1, plans.size()); 

    } 
} 

我缺少什麼?

回答

1

不知道下面是否正確,但得到它的工作。 我強迫我的LocalContainerEntityManagerFactoryBean與建設的屬性。

DatabaseConfig片段:

@Configuration 
    @EnableTransactionManagement 
    @ConfigurationProperties(prefix = "spring.datasource") 
    public class DatabaseConfig extends HikariConfig { 

     @Autowired 
     @Bean 
     public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, Environment env) { 
      LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean(); 

      entityManagerFactory.setDataSource(dataSource); 

      // Classpath scanning of @Component, @Service, etc annotated class 
      entityManagerFactory.setPackagesToScan(new String[]{"com.test"}); 

      // Vendor adapter 
      HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
      entityManagerFactory.setJpaVendorAdapter(vendorAdapter); 

      Properties jpaProperties = new Properties(); 

      jpaProperties.put("hibernate.show_sql", 
        env.getRequiredProperty("spring.jpa.properties.hibernate.show_sql") 
      ); 

      jpaProperties.put("hibernate.format_sql", 
        env.getRequiredProperty("spring.jpa.properties.hibernate.format_sql") 
      ); 
      jpaProperties.put("hibernate.generate_statistics", 
        env.getRequiredProperty("spring.jpa.properties.hibernate.generate_statistics") 
      ); 

      entityManagerFactory.setJpaProperties(jpaProperties); 
      return entityManagerFactory; 
     } 
    } 

的配置

2017-03-16 11:41:02.881 DEBUG 7884 --- [main] o.h.s.internal.ConcurrentStatisticsImpl : HHH000117: HQL: select up from UserPlan up, time: 48ms, rows: 1 
2017-03-16 11:41:02.885 INFO 7884 --- [main] i.StatisticalLoggingSessionEventListener : Session Metrics { 
    939077 nanoseconds spent acquiring 1 JDBC connections; 
    0 nanoseconds spent releasing 0 JDBC connections; 
    2848386 nanoseconds spent preparing 1 JDBC statements; 
    12205063 nanoseconds spent executing 1 JDBC statements; 
    0 nanoseconds spent executing 0 JDBC batches; 
    0 nanoseconds spent performing 0 L2C puts; 
    0 nanoseconds spent performing 0 L2C hits; 
    0 nanoseconds spent performing 0 L2C misses; 
    0 nanoseconds spent executing 0 flushes (flushing a total of 0 entities and 0 collections); 
    18693 nanoseconds spent executing 1 partial-flushes (flushing a total of 0 entities and 0 collections) 
}