Tunjukkan Penyataan Hibernate / JPA SQL dari Spring Boot

1. Gambaran keseluruhan

Spring JDBC dan JPA memberikan abstraksi berbanding API JDBC asli yang membolehkan pembangun menyingkirkan pertanyaan SQL asli. Namun, seringkali kita perlu melihat pertanyaan SQL yang dihasilkan secara automatik dan urutan di mana ia dijalankan untuk tujuan debug.

Dalam tutorial ringkas ini, kita akan melihat pelbagai cara mencatatkan pertanyaan SQL ini di Spring Boot.

2. Mencatat Pertanyaan JPA

2.1. Ke Output Standard

Cara paling mudah adalah membuang pertanyaan ke standard adalah dengan menambahkan yang berikut ke application.properties :

spring.jpa.show-sql=true

Untuk mencantikkan atau mencetak SQL dengan cantik, kita boleh menambah:

spring.jpa.properties.hibernate.format_sql=true

Walaupun ini sangat mudah, ia tidak digalakkan kerana secara langsung memuatkan semuanya ke output standard tanpa pengoptimuman kerangka pembalakan.

Lebih-lebih lagi, ia tidak mencatat parameter penyataan yang disediakan.

2.2. Melalui Pembalak

Sekarang, mari kita lihat bagaimana kita dapat log penyataan SQL dengan mengkonfigurasi pembalak dalam fail sifat:

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

Baris pertama mencatat pertanyaan SQL, dan pernyataan kedua mencatat parameter penyataan yang disediakan.

Harta cetakan yang cantik akan berfungsi dalam konfigurasi ini juga.

Dengan menetapkan sifat ini, log akan dihantar ke appender yang dikonfigurasi . Secara lalai, Spring Boot menggunakan logback dengan appender standard.

3. Logging JdbcTemplate Pertanyaan

Untuk mengkonfigurasi log penyataan semasa menggunakan JdbcTemplate , kami memerlukan sifat berikut:

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

Sama dengan konfigurasi pembalakan JPA, baris pertama adalah untuk penyataan log dan yang kedua adalah untuk mencatatkan parameter penyataan penyediaan.

4. Bagaimana Ia Berfungsi?

Kelas Spring / Hibernate, yang menghasilkan pernyataan SQL dan menetapkan parameter, sudah mengandungi kod untuk mencatatnya .

Walau bagaimanapun, tahap penyataan log tersebut masing-masing ditetapkan ke DEBUG dan TRACE , yang lebih rendah daripada tahap lalai dalam Spring Boot - INFO .

Dengan menambahkan sifat ini, kami hanya menetapkan penebang tersebut ke tahap yang diperlukan.

5. Kesimpulan

Dalam artikel pendek ini, kami telah melihat cara-cara untuk log pertanyaan SQL di Spring Boot.

Sekiranya kita memilih untuk mengkonfigurasi beberapa appenders, kita juga dapat memisahkan pernyataan SQL dan pernyataan log lain ke dalam fail log yang berbeza untuk menjaga kebersihan.