Ren*_*407 6 spring hibernate spring-data-jpa spring-boot
在遵循各种示例并阅读 spring 引导文档后,我仍然无法启用休眠统计。我正在 application.properties 文件中设置属性。通过集成测试运行 spring boot 应用程序或不Application.java产生任何统计信息。
我的application.properties档案。
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
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
还有我的集成测试
@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());
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
use*_*562 14
它对我有用(使用 Spring Boot 2.1.6.RELEASE)。
a) 在文件 application.properties 中:
spring.jpa.properties.hibernate.generate_statistics=true
Run Code Online (Sandbox Code Playgroud)
b) 确保“org.hibernate.stat”的运行时调试级别至少为 DEBUG:
curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/actuator/loggers/org.hibernate.stat
Run Code Online (Sandbox Code Playgroud)
c) 签入日志类似于:
2019-07-03 21:27:27.739 DEBUG 11797 --- [nio-8080-exec-3] o.h.stat.internal.StatisticsImpl : HHH000117: HQL: select count(*) from AppRequest x WHERE x.uuid = :uuid, time: 1ms, rows: 1
Run Code Online (Sandbox Code Playgroud)
不确定以下是否正确,但可以正常工作。我正在LocalContainerEntityManagerFactoryBean用建筑强迫我的财产。
数据库配置片段:
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
配置后
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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12828 次 |
| 最近记录: |