tilte

Hiển thị các câu lệnh SQL Hibernate / JPA từ Spring Boot


1. Khái quát chung

Spring JDBC và JPA cung cấp các bản tóm tắt trên các API JDBC gốc, cho phép các nhà phát triển loại bỏ các truy vấn SQL gốc. Tuy nhiên, chúng ta thường cần xem các truy vấn SQL được tạo tự động đó và thứ tự chúng được thực thi cho mục đích gỡ lỗi.

Trong hướng dẫn nhanh này, chúng ta sẽ xem xét các cách khác nhau để ghi các truy vấn SQL này trong Spring Boot.

2. Ghi nhật ký các truy vấn JPA

2.1. Tiêu chuẩn đầu ra

Cách đơn giản nhất để kết xuất các truy vấn thành tiêu chuẩn là thêm vào application.properties :

spring.jpa.show-sql=true

Để in ra đẹp hơn trong SQL, chúng ta có thể thêm:

spring.jpa.properties.hibernate.format_sql=true

Mặc dù điều này cực kỳ đơn giản, nhưng nó không được khuyến khích , vì nó trực tiếp tải mọi thứ xuống tiêu chuẩn đầu ra mà không có bất kỳ tối ưu hóa nào của 1 framework…

2.2. Ghi lại Loggers

Bây giờ chúng ta hãy xem cách chúng ta có thể ghi lại các câu lệnh SQL bằng cách định cấu hình trình ghi nhật ký trong tệp thuộc tính:

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

Dòng đầu tiên ghi các truy vấn SQL và câu lệnh thứ hai ghi các tham số câu lệnh đã chuẩn bị.

Thuộc tính in ấn đẹp cũng sẽ hoạt động trong cấu hình này.

Bằng cách thiết lập các thuộc tính này, nhật ký sẽ được gửi đến appender đã định cấu hình. Theo mặc định, Spring Boot sử dụng logback với một appender tiêu chuẩn.


3. Ghi nhật ký các truy vấn JdbcTemplate

Để cấu hình ghi nhật ký câu lệnh khi sử dụng JdbcTemplate , chúng ta cần các thuộc tính sau:

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

Tương tự như cấu hình ghi nhật ký JPA, dòng đầu tiên dành cho các câu lệnh ghi nhật ký và dòng thứ hai là ghi các tham số của các câu lệnh đã chuẩn bị.

4. Nó hoạt động như thế nào?

Các lớp Spring / Hibernate, tạo ra các câu lệnh SQL và thiết lập các tham số, đã chứa mã để ghi chúng.

Tuy nhiên, mức của các câu lệnh nhật ký đó được đặt tương ứng thành DEBUG và TRACE , thấp hơn mức mặc định trong Spring Boot - INFO .

Bằng cách thêm các thuộc tính này, chúng tôi chỉ thiết lập các trình logger đó ở mức cần thiết.

5. Kết luận

Trong bài viết ngắn này, chúng ta đã xem xét các cách ghi các truy vấn SQL trong Spring Boot.

Nếu chúng ta chọn định cấu hình nhiều trình phụ , chúng ta cũng có thể tách các câu lệnh SQL và các câu lệnh nhật ký khác thành các tệp nhật ký khác nhau để giữ mọi thứ sạch sẽ.