728x90
반응형
[build.gradle 파일] 코드 추가
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8'
[ application.properties 파일 ] 코드 추가
# JPA의 구현체인 Hibernate가 동작하면서 발생한 SQL의 가독성을 높여준다.
#spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.highlight_sql=true
spring.jpa.properties.hibernate.validator.apply_to_ddl=false
[ P6SpyFormatter.java 파일 ] 클래스 생성
@Component // 1
public class P6SpyFormatter extends JdbcEventListener implements MessageFormattingStrategy {
@Override // 2
public void onAfterGetConnection(ConnectionInformation connectionInformation, SQLException e) {
P6SpyOptions.getActiveInstance().setLogMessageFormat(getClass().getName());
}
@Override // 3
public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {
StringBuilder sb = new StringBuilder();
sb.append(category).append(" ").append(elapsed).append("ms");
if (StringUtils.hasText(sql)) {
sb.append(highlight(format(sql)));
}
return sb.toString();
}
private String format(String sql) {
if (isDDL(sql)) {
return FormatStyle.DDL.getFormatter().format(sql);
} else if (isBasic(sql)) {
return FormatStyle.BASIC.getFormatter().format(sql);
}
return sql;
}
private String highlight(String sql) {
return FormatStyle.HIGHLIGHT.getFormatter().format(sql);
}
private boolean isDDL(String sql) {
return sql.startsWith("create") || sql.startsWith("alter") || sql.startsWith("comment");
}
private boolean isBasic(String sql) {
return sql.startsWith("select") || sql.startsWith("SELECT") ||
sql.startsWith("insert") || sql.startsWith("INSERT") ||
sql.startsWith("update") || sql.startsWith("UPDATE") ||
sql.startsWith("delete") || sql.startsWith("DELETE");
}
}
[적용 결과 사진]
쿼리문의 키워드에 파란색으로 색상이 적용되고, 특정 키워드에 줄개행도 적용되며 파라미터도 확인이 가능해진다!!
728x90
반응형
'Hibernate > SpringDataJPA' 카테고리의 다른 글
[JPA] Auditing과 MappedSuperClass(상속) (0) | 2023.06.12 |
---|---|
SpringDataJPA 쿼리메소드 N+1 LeftOuterJoin걸기 @EntityGraph (0) | 2023.03.17 |