Tampilkan Pernyataan SQL Hibernate / JPA dari Spring Boot

1. Ikhtisar

Spring JDBC dan JPA menyediakan abstraksi melalui API JDBC asli yang memungkinkan pengembang untuk menghapus kueri SQL asli. Namun, seringkali kita perlu melihat kueri SQL yang dibuat secara otomatis dan urutan eksekusi kueri tersebut untuk tujuan debugging.

Dalam tutorial singkat ini, kita akan melihat berbagai cara untuk mencatat kueri SQL ini di Spring Boot.

2. Mencatat Kueri JPA

2.1. Untuk Output Standar

Cara termudah adalah dengan membuang kueri ke standar adalah dengan menambahkan berikut ini ke application.properties :

spring.jpa.show-sql=true

Untuk mempercantik atau mencetak SQL yang cantik, kita dapat menambahkan:

spring.jpa.properties.hibernate.format_sql=true

Meskipun ini sangat sederhana, tidak disarankan karena secara langsung menurunkan semuanya ke keluaran standar tanpa pengoptimalan kerangka kerja logging.

Selain itu, ia tidak mencatat parameter pernyataan yang disiapkan.

2.2. Melalui Penebang

Sekarang, mari kita lihat bagaimana kita dapat mencatat pernyataan SQL dengan mengkonfigurasi logger di file properti:

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

Baris pertama mencatat kueri SQL, dan pernyataan kedua mencatat parameter pernyataan yang disiapkan.

Properti pretty print juga akan berfungsi dalam konfigurasi ini.

Dengan menyetel properti ini, log akan dikirim ke appender yang dikonfigurasi . Secara default, Spring Boot menggunakan logback dengan appender standar.

3. Mencatat Kueri JdbcTemplate

Untuk mengonfigurasi pembuatan log pernyataan saat menggunakan JdbcTemplate , kita memerlukan properti berikut:

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

Mirip dengan konfigurasi logging JPA, baris pertama untuk pernyataan logging dan baris kedua untuk mencatat parameter pernyataan yang disiapkan.

4. Bagaimana cara kerjanya?

Kelas Spring / Hibernate, yang menghasilkan pernyataan SQL dan mengatur parameter, sudah berisi kode untuk mencatatnya .

Namun, level pernyataan log tersebut disetel ke DEBUG dan TRACE , yang lebih rendah dari level default di Spring Boot - INFO .

Dengan menambahkan properti ini, kami hanya menyetel penebang tersebut ke tingkat yang diperlukan.

5. Kesimpulan

Dalam artikel singkat ini, kami telah melihat cara untuk mencatat kueri SQL di Spring Boot.

Jika kita memilih untuk mengonfigurasi beberapa appenders, kita juga dapat memisahkan pernyataan SQL dan pernyataan log lainnya ke dalam file log yang berbeda untuk menjaga semuanya tetap bersih.