国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

驚呆了!Spring Boot 調試執行 SQL 的12個強大技巧

數據庫 其他數據庫
在Spring Boot應用里調試數據庫交互,就跟閉著眼在迷宮里找路一樣難。用Spring Data JPA和Hibernate的時候,日志記錄可不是只在控制臺顯示點信息那么簡單,它能讓我們看清應用里面到底是怎么運行的。

環境:SpringBoot3.4.2

1. 簡介

在Spring Boot應用里調試數據庫交互,就跟閉著眼在迷宮里找路一樣難。用Spring Data JPA和Hibernate的時候,日志記錄可不是只在控制臺顯示點信息那么簡單,它能讓我們看清應用里面到底是怎么運行的。

本文將探討如何配置、定制和解讀Hibernate與Spring Data JPA的日志記錄。通過學習,你將掌握將日志轉化為強大診斷與監控工具的實用技能,從而提升應用程序的可靠性和性能。

2.實戰案例

2.1 開啟SQL日志

spring:
  jpa:
    show-sql: true

默認情況下,該配置為false。當設置 spring.jpa.show-sql=true 時,Spring Boot 會將此配置傳遞給底層 JPA 提供商(默認為 Hibernate),該提供商隨后會將執行的所有 SQL 命令打印到標準輸出(控制臺)。需要注意的是,此種方式輸出的SQL是通過System.out。如下示例:

Hibernate: select b1_0.id,b1_0.description,b1_0.isbn,b1_0.page,b1_0.price,b1_0.title from book b1_0 limit ?,?

它會打印出SQL語句,但不會顯示綁定的參數值(占位符(?)會顯示,但實際值不會)。生產環境中禁止使用show-sql功能。

2.2 格式化SQL

spring:
  jpa:
    properties:
      hibernate:
        '[format_sql]': true

該屬性會對其記錄的 SQL 查詢進行格式化處理,使其更易于閱讀。如下示例:

Hibernate: 
    select
        b1_0.id,
        b1_0.description,
        b1_0.isbn,
        b1_0.page,
        b1_0.price,
        b1_0.title 
    from
        book b1_0 
    limit
        ?, ?

注意:該配置必須在設置show-sql為true時有效。

2.3 高亮SQL

spring:
  jpa:
    properties:
      hibernate:
        '[highlight_sql]': true

它能在Hibernate的SQL輸出中啟用ANSI顏色代碼,使SQL關鍵字、表名及其他查詢部分在控制臺中視覺上清晰區分。這本質上是對日志記錄的SQL語句進行的"語法高亮"。如下示例:

圖片圖片

SQL語句中的關鍵字高亮顯示了。注意,SQL高亮功能僅在控制臺或IDE日志窗口支持ANSI顏色時生效。

2.4 顯示SQL注釋

spring:
  jpa:
    properties:
      hibernate:
        '[use_sql_comments]': true

在生成的SQL語句中包含額外的注釋行。這些注釋通常標明查詢的上下文或來源,例如觸發該查詢的實體、集合或操作。如下示例:

圖片圖片

這里顯示的是默認的注釋,我們可以結合@Meta注解自定義注釋說明,如下示例:

public interface BookRepository extends PagingAndSortingRepository<Book, Long>, CrudRepository<Book, Long> {
  @Meta(comment = "分頁查詢所有的圖書信息")
  Page<Book> findAll(Pageable pageable) ;
}

運行結果:

圖片圖片

2.5 顯示統計跟蹤信息

spring:
  jpa:
    properties:
      hibernate:
        '[generate_statistics]': true

它啟用了Hibernate的內部統計跟蹤功能。啟用后,Hibernate將收集并展示有關持久層運行狀況的詳細運行時指標——例如查詢次數、緩存命中/未命中、實體加載次數等。如下示例:

圖片圖片

收集統計數據會增加一些開銷。在開發、測試或性能分析階段使用是可行的,但在生產環境中通常應禁用此功能,除非需要用于監控。此外,這些指標可通過JMX或Micrometer/Prometheus等工具集成到監控儀表板中。

2.6 顯示慢SQL

spring:
  jpa:
    properties:
      hibernate:
        '[log_slow_query]': 200 #慢查詢閾值(毫秒)
logging:
  level:
    '[org.hibernate.SQL_SLOW]': INFO

通過上面的配置在查詢執行時間超過指定毫秒數時記錄警告日志。值200表示記錄所有耗時超過200毫秒的查詢。如下示例:

圖片圖片

接下來,我們將基于日志級別的SQL日志控制。

Hibernate會生成幾類日志,每類日志服務于不同目的:

  • SQL查詢:發送到數據庫的實際SQL語句
  • 參數:查詢參數的綁定值
  • 事務:事務生命周期事件
  • 緩存:一級緩存和二級緩存的命中與未命中情況

我們先將上面的所有配置刪除或者關閉。

2.7 生成原始的SQL語句

logging:
  level:
    '[org.hibernate.SQL]': DEBUG

org.hibernate.SQL 負責輸出 Hibernate 生成的原始 SQL 語句及其發送至數據庫的過程,但不會顯示參數值(這些需要單獨的日志器)。如下示例:

21:04  DEBUG  [main] org.hibernate.SQL Line:135 - 
    select
        b1_0.id,
        b1_0.description,
        b1_0.isbn,
        b1_0.page,
        b1_0.price,
        b1_0.title 
    from
        book b1_0 
    limit
        ?, ?

這里輸出的SQL語句完全與Hibernate發送至數據庫的版本一致,但參數位置使用了占位符(?)進行標記。

2.8 顯示SQL參數

logging:
  level:
    '[org.hibernate.SQL]': DEBUG
    '[org.hibernate.orm.jdbc.bind]': TRACE

在Hibernate 6(Spring Boot 3及更高版本所采用的版本)中,此設置用于啟用參數綁定日志記錄功能。當設置為TRACE級別時,Hibernate會將綁定到生成的SQL語句中占位符(?)的每個值都記錄到日志中。如下示例:

21:07  DEBUG  [main] org.hibernate.SQL Line:135 - 
    select
        b1_0.id,
        b1_0.description,
        b1_0.isbn,
        b1_0.page,
        b1_0.price,
        b1_0.title 
    from
        book b1_0 
    limit
        ?, ?
21:07 TRACE  [main] org.hibernate.orm.jdbc.bind Line:24  - binding parameter (1:INTEGER) <- [0]
21:07 TRACE  [main] org.hibernate.orm.jdbc.bind Line:24  - binding parameter (2:INTEGER) <- [20]

2.9 顯示事務日志

logging:
  level:
    '[org.hibernate.engine.transaction]': DEBUG

此配置為Hibernate事務管理引擎啟用了調試級別的日志記錄。包括事務啟動、提交、回滾或標記事務以供回滾等操作。如下示例:

圖片圖片

2.10 獲取數據日志(從結果集)

logging:
  level:
    '[org.hibernate.orm.jdbc.extract]': TRACE

這適用于Hibernate 6+的日志配置方案,可為JDBC結果提取過程生成極其詳細的日志——該過程指Hibernate從數據庫返回的結果集(ResultSet)中獲取數據,并將其映射至Java對象(實體、DTO等)的操作。如下示例:

圖片圖片

2.11 統計信息

spring:
  jpa:
    properties:
      hibernate:
        '[generate_statistics]': true
logging:
  level:
    '[org.hibernate.stat]': DEBUG

這將輸出 Hibernate 統計信息日志記錄。如下示例:

圖片圖片

2.12 二級緩存&查詢緩存日志

logging:
  level:
    '[org.hibernate.cache]': DEBUG

 它控制Hibernate的二級緩存和查詢緩存日志記錄,顯示實體/查詢何時被緩存、獲取或清除。在開發階段有助于診斷緩存行為和性能,但生產環境中過于冗余。

責任編輯:武曉燕 來源: Springboot全家桶實戰案例
相關推薦

2024-07-05 11:47:43

2021-07-05 18:05:40

SpringBean方法

2021-03-17 11:47:37

tomcatJavaServerJava

2015-06-24 16:09:54

Easy Connec深信服

2020-07-09 15:10:20

開發技能代碼

2015-05-19 14:30:48

加密視頻加密億賽通

2021-12-13 22:52:37

iphone iOSHTML

2021-11-02 11:31:47

Go代碼模式

2021-05-28 10:09:22

GC詳解Java JVM

2020-01-06 09:14:59

Java程序員線程

2020-04-02 07:31:53

RPC超時服務端

2013-08-01 15:12:43

2025-04-02 00:45:00

JupyterDrawData數據

2019-12-20 14:32:55

JavaScript函數開發

2020-12-23 08:03:01

JavaScript開發代碼

2023-09-24 13:55:42

Spring應用程序

2025-10-28 01:25:00

SQL查詢Spring查詢模式

2020-10-31 09:06:37

C語言編程語言

2024-01-03 14:54:56

PythonPandas數據處理工具

2023-09-25 13:15:50

SQL數據庫
點贊
收藏

51CTO技術棧公眾號

91伊人久久| 美女黄色免费看| 国产在线激情| 亚洲激情图片小说视频| 91在线视频九色| 国产精品中文欧美| 久久久久久久久久国产精品| 欧美日韩精品免费在线观看视频| 欧美激情四色| 久久久欧美一区二区| 欧美艳星kaydenkross| 欧美丝袜丝交足nylons图片| 91av入口| 国产偷v国产偷v亚洲高清| 青青草原国产免费| 欧美片第1页综合| 性色av一区二区咪爱| 精品久久福利| 欧美精品一区二区三区视频| 日本高清在线观看wwwww色| 午夜精品福利久久久| 免费在线观看羞羞视频| 欧美国产一区二区| 无码内射中文字幕岛国片| 久久亚洲影视婷婷| 久久久性生活视频| 国产成人免费视频一区| 成人免费看片视频在线观看| 国产一区二区免费视频| 69精品丰满人妻无码视频a片| 久久99精品国产91久久来源| 亚洲精品一区二区三区蜜桃久| 亚洲少妇在线| 欧美日韩在线一二三| 美女一区二区三区| 一区二区三区在线视频111| 日韩电影在线一区二区三区| 日韩国产欧美精品| 精品中文字幕一区二区| aaa免费在线观看| 九一九一国产精品| 成人一区二区免费视频| 91在线视频免费91| 狠狠操精品视频| 亚洲老妇xxxxxx| 4480yy私人影院高清不卡| 色偷偷一区二区三区| 精品孕妇一区二区三区| 亚洲第一区中文99精品| 欧美日韩免费观看视频| 久久久久免费精品国产| 一本色道久久综合狠狠躁的番外| 国产精品狼人色视频一区| 91精品蜜臀一区二区三区在线| 国产一区二区免费电影| 日本不卡视频在线观看| 成年人网站免费视频| 国产精品久久久久桃色tv| 欧美知名女优| 日韩欧美精品三级| 免费一级欧美在线观看视频| 青青久久av北条麻妃黑人| 国产精品va| 国产精品自拍合集| 一区二区三区在线观看动漫 | 日韩高清在线观看一区二区| 国产91精品久久久久久| 91精品国产视频| 中文字幕精品—区二区日日骚| 国产91丝袜在线观看| av天天av| 日韩一级片网址| 欧美视频二区欧美影视| ts人妖另类在线| 成人小视频免费观看| 国产91大片| 亚洲福利视频专区| 老牛精品亚洲成av人片| 久久久综合亚洲91久久98| jizz一区二区| 国产视频第一区| 免费97视频在线精品国自产拍| 久久福利影院| 青青草国产免费| 色国产精品一区在线观看| 国产福利一区二区三区在线播放| 国产精品视频久| zzijzzij亚洲日本少妇熟睡| 国产永久免费高清在线观看| 色悠悠国产精品| 国产综合精品一区| 亚洲乱码国产一区三区| 欧美日韩在线三级| 老牛国内精品亚洲成av人片| 视频在线观看成人| 亚洲成人免费在线| 最新亚洲国产| 亚洲高清视频在线观看| 黄色成人在线免费| 电影一区中文字幕| 亚洲欧洲精品一区二区| 亚洲国产精品久久不卡毛片| 亚洲成人激情社区| 精品国产一区二区三区麻豆免费观看完整版 | 国产理论电影在线| 国产精品久久久久久久久久东京| 精品写真视频在线观看| 国产在线黄色| 日韩美女在线观看一区| 91丨porny丨户外露出| 色呦呦在线观看视频| 亚洲一区二区中文字幕| 亚洲激情综合网| 99re6热只有精品免费观看| 小说区视频区图片区| 91精品国产综合久久精品图片 | 可以在线看的av网站| 欧美麻豆精品久久久久久| 在线亚洲a色| 漂亮人妻被中出中文字幕| 亚洲免费一级电影| 在线综合亚洲| 东热在线免费视频| 成人黄色av网站| 亚洲一区二区美女| 精品国产18久久久久久洗澡| 黄色免费福利视频| 国产一区二区三区在线观看视频| 秋霞电影网一区二区| 黄色网页在线免费看| 超碰97人人人人人蜜桃| 午夜伊人狠狠久久| 国产日韩欧美一区二区三区| 高清av免费看| 久久免费视频这里只有精品| 久久这里只有精品首页| 欧美极品在线| 亚洲不卡中文字幕无码| 中日韩午夜理伦电影免费 | 国产精品网站大全| 亚洲激情综合网| 中日韩免视频上线全都免费| 99热com| 97超碰国产精品女人人人爽| 国产精品视频麻豆| 欧美日韩爱爱| 久久久久久久影视| 欧美精品一区二区三区在线看午夜 | 麻豆mv在线看| 99国产精品白浆在线观看免费| 亚洲欧美在线一区| 成人精品一区二区三区中文字幕| 日韩精品一区二区三区av| 久草视频这里只有精品| 另类美女黄大片| 国产精品久久久久久久久果冻传媒 | 91精品国自产在线观看| 在线观看视频一区二区| 国产精品入口| ririsao久久精品一区| 日本福利视频在线观看| 久久影院模特热| 亚洲欧洲精品一区二区三区不卡| 视频福利一区| 牛牛澡牛牛爽一区二区| 欧美日韩一区在线播放 | 精品国产99国产精品| 狠狠色丁香久久婷婷综合_中| 麻豆网站免费在线观看| 日韩欧美不卡在线| 韩日欧美一区二区| 精品久久久久久中文字幕一区奶水 | 欧美成人性福生活免费看| 国产综合色视频| 成人永久在线| 香港日本韩国三级| 99高清视频有精品视频| 亚洲精品suv精品一区二区| 久久亚洲一级片| 国产精品x453.com| 第一中文字幕在线| 成人观看免费完整观看| 国产精品综合不卡av| 3d动漫精品啪啪一区二区竹菊| 成人午夜大片免费观看| 欧美伦理影院| 蜜桃麻豆av在线| 免费国产视频| 视频一区视频二区视频| 91禁外国网站| 日韩一二在线观看| 国产亚洲欧美日韩俺去了| 国产精品久久久久久久久久10秀| 欧美aaaxxxx做受视频| 男人亚洲天堂网| 成人写真福利网| 中文字幕日本精品| 一本大道久久a久久精品综合| 豆国产96在线|亚洲| 欧美日韩国产探花|