JPA 底層的智慧化技術
上線過程很順利,在上線完成後,發現資料庫又大量的,慢sql。
都是根據一個id去做兩個表的 left join
於是翻天覆地的去找個sql 來自於那個業務模組。 結果翻了一個地朝天也沒有找到。
奇怪了, 先上的監控,併發有每秒幾十個這種sql,肯定是一個經常被訪問的地方,沒有道理。
最後經過監控java 執行緒的動作。找到了問題所在。
引出了一段曲折的故事:
假如 有兩個表 product 與product-item 表。對應於head detail 的關係。
在介面實現過程中,一般會用 手工的sql 直接去查詢 product-item 表,然後把生成的結果集,轉化/封裝為一個product 物件返回給呼叫者。
這個實現也是沒有問題的。
關鍵是JPA 的底層實現太智慧化了,有點過頭了, 底層發現你封裝的這個product 例項中,有一部分欄位是空的,
於是JPA 的底層就在想了,你丫的,怎麼能這麼幹呢,資料不全啊。影響嚴重啊, 於是底層的自動補全機制,開始運作了,把你封裝出來的結果集遍歷一遍,對立面的每個物件都去 product 表裡把相應的缺失的欄位查出來,然後合併到你的結果集中。
問題關鍵是你的本意是,這些缺失的欄位在真正的業務邏輯中是用不到的,不然誰傻傻的做這破事?
如果恰巧,你自己封裝的結果集中,沒有key。 那麼對不起了。 開始的那個問題就出來。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-746702/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS底層GCD (技術總結)iOSGC
- docker架構和底層技術Docker架構
- AIGC底層技術介紹AIGC
- Redis-技術專區-幫從底層徹底吃透RDB技術原理Redis
- Redis-技術專區-幫從底層徹底吃透AOF技術原理Redis
- 1區塊鏈底層技術-序區塊鏈
- SQL Server底層架構技術對比SQLServer架構
- 支撐 Java NIO 與 NodeJS 的底層技術JavaNodeJS
- java底層鏈遊系統開發技術功能(成熟技術)Java
- 【得物技術】深入理解synchronzied底層原理
- 從區塊鏈底層技術開發角度闡述LikeLib技術區塊鏈
- 從ARM”斷供“華為看底層技術的重要性
- 七、真正的技術——CAS操作原理、實現、底層原始碼原始碼
- 看懂這篇,才能說了解併發底層技術
- 區塊鏈BAAS底層技術開發,區塊鏈BAAS底層應用開發建設區塊鏈
- 擁抱更底層技術——從CSS變數到HoudiniCSS變數
- 一百多年了,電動汽車底盤技術智慧化得怎麼樣了?
- 四種區塊鏈底層技術形態的對比解讀區塊鏈
- 區塊鏈baas底層系統平臺技術開發區塊鏈
- 專家:區塊鏈底層技術創新是關鍵區塊鏈
- 摩根大通積極投資比特幣底層技術和…比特幣
- 使用Spring Data JPA實現持久化層的簡化開發Spring持久化
- 發展數字經濟還需更多底層技術創新
- 反序列化底層學習
- 精華推薦 | 【JVM深層系列】「GC底層調優系列」一文帶你徹底加強夯實底層原理之GC垃圾回收技術的分析指南(GC原理透析)JVMGC
- 狗狗幣可能是騙局,但區塊鏈底層技術不是區塊鏈
- 【趣話計算機底層技術】一個故事看懂各種鎖計算機
- OC底層探索(十六) KVO底層原理
- 華為網路技術-三層交換技術
- 030、實現容器的底層技術(2019-01-25 週五)
- 國產多維資料庫NeuralCube!中國人自己的大資料底層核心技術!資料庫大資料
- ReactiveCocoa 中 集合類 RACSequence 和 RACTuple 底層實現分析 | 掘金技術徵文React
- HashMap的底層原理HashMap
- 專訪三七互娛CTO朱懷敏:建立技術底層優勢,加速推進遊戲工業化程式遊戲
- 三層交換技術解析
- 會話層技術-cookie會話Cookie
- 會話層技術-session會話Session
- 虛擬化技術在智慧終端的應用