반응형
상황
jOOQ 에서 실행되는 SQL 을 show, print, logging 해보자
해결법
1. Listener 생성
public class LoggingExecuteListener extends DefaultExecuteListener {
@Override
public void executeStart(ExecuteContext ctx) {
// Create a new DSLContext for logging rendering purposes
// This DSLContext doesn't need a connection, only the SQLDialect...
DSLContext create = DSL.using(ctx.dialect(),
// ... and the flag for pretty-printing
new Settings().withRenderFormatted(true));
// If we're executing a query
if (ctx.query() != null) {
System.out.println(create.renderInlined(ctx.query()));
} else if (ctx.routine() != null) {
// If we're executing a routine
System.out.println(create.renderInlined(ctx.routine()));
} else if (ctx.batchQueries() != null) {
// If we're executing a batch queries
Arrays.stream(ctx.batchQueries()).forEach(query -> System.out.println(create.renderInlined(query)));
}
}
}
2. ListenerProvider Bean 생성
@Bean
public ExecuteListenerProvider executeListenerProvider() {
return new DefaultExecuteListenerProvider(new LoggingExecuteListener());
}
출처
https://www.jooq.org/doc/3.13/manual/sql-execution/execute-listeners
https://www.jooq.org/doc/latest/manual/sql-building/queryparts/pretty-printing/
반응형
'java' 카테고리의 다른 글
[java] JVM 옵션 -Xms 와 -Xmx 를 같게 하는 이유 (0) | 2022.05.26 |
---|---|
Using @PageableDefault in webflux (0) | 2022.04.20 |
[java] jar 압축 해제 (0) | 2020.08.03 |
[java][test] JSON 같은지 비교 (0) | 2020.07.17 |
[Guava] cache simple example (0) | 2020.06.03 |