1概要

Springリンク:/spring-jdbc-jdbctemplate[JDBC]および

JPA

は、ネイティブJDBC APIを抽象化したもので、開発者はネイティブSQL照会をやめることができます。ただし、多くの場合、これらの自動生成されたSQLクエリとデバッグ目的で実行された順序を確認する必要があります。

このクイックチュートリアルでは、これらのSQLクエリをSpring Bootで記録するさまざまな方法を見ていきます。


2 JPAクエリのログ記録


2.1. 標準出力へ

最も簡単な方法は、クエリを標準出力にダンプすることです。以下を

application.properties

に追加することです。

spring.jpa.show-sql=true

SQLを美しく、あるいはきれいに印刷するために、以下を追加できます。

spring.jpa.properties.hibernate.format__sql=true

これは非常に単純ですが、ロギングフレームワークを最適化しなくてもすべてを標準出力に直接アンロードするので、推奨されません** 。

さらに、** プリペアドステートメントのパラメータは記録されません。


2.2. ロガー経由

それでは、プロパティファイルでロガーを設定してSQLステートメントを記録する方法を見てみましょう。

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

1行目はSQLクエリを記録し、2行目はprepared statementのパラメータを記録します。

プリティプリントプロパティもこの設定で機能します。

これらのプロパティを設定することによって、

ログは設定されたappender

に送信されます。デフォルトでは、Spring Bootは

logback

を標準のoutアペンダとともに使用します。


3ロギング

JdbcTemplate

クエリ


JdbcTemplate

を使用するときにステートメントロギングを設定するには、以下のプロパティが必要です。

logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE

JPAロギング設定と同様に、1行目はステートメントのロギング用で、2行目は準備済みステートメントのパラメーターのロギング用です。


4どのように動作しますか?

  • SQL/ステートメントを生成し、パラメータを設定するSpring/Hibernateクラスは、

    それらをログに記録するためのコードを既に含んでいます

ただし、これらのログステートメントのレベルはそれぞれ

DEBUG

および

TRACE

に設定されており、これはSpring Bootのデフォルトレベルである

INFO

よりも低くなっています。

これらのプロパティを追加することで、これらのロガーを必要なレベルに設定するだけです。


5結論

この短い記事では、Spring BootでSQLクエリを記録する方法について説明しました。


複数のアペンダを設定する

を選択した場合は、SQLステートメントと他のログステートメントを別々のログファイルに分けて整理することもできます。