使用DataSource-Proxy在Spring Boot中記錄SQL語句 - Vlad Mihalcea

banq發表於2021-12-09

在本文中,我將向您展示使用 Spring Boot 時記錄 SQL 語句的最佳方式。

記錄 SQL 查詢非常重要,因為它允許您驗證生成語句的數量、自動生成查詢的語法,以及證明JDBC 批處理按預期工作

DataSource-Proxy是記錄 SQL 語句的最佳方式之一:由於它代理 JDBC DataSource,因此它可以記錄您可能與 Spring Boot 一起使用的任何資料訪問層技術的語句。即使您混合使用 JPA 和jOOQ,DataSource-Proxy 也會列印所有通過Connection代理的 JDBC 執行的 SQL 語句。

新增依賴:

<dependency>
    <groupId>com.github.gavlyukovskiy</groupId>
    <artifactId>datasource-proxy-spring-boot-starter</artifactId>
    <version>${ds-proxy-spring-boot-starter.version}</version>
</dependency>

當 Spring Boot 啟動時,它會建立一個DataSource供 JPA、Hibernate 或其他資料訪問技術使用。為了使用 DataSource-Proxy,我們需要允許應用程式使用這個代理替代預設的 JDBCDataSource。

現在 Spring Boot 可以列印由任何資料訪問技術生成的有意義的 SQL 語句:

Name:dataSource, Connection:5, Time:1, Success:True
Type:Prepared, Batch:False, QuerySize:1, BatchSize:0
Query:["
    SELECT
       u.id AS id1_7_,
       u.email AS email5_7_,
       u.external_id AS external6_7_,
       u.first_name AS first_na7_7_,
       u.last_name AS last_nam9_7_,
    FROM users u
    WHERE u.email = ?
"]
Params:[(
    john.doe@acme.com
)]

原文點選標題

相關文章