如何“修改”底層框架原始碼中的某些功能

qq1913284695發表於2017-07-14
背景:
公司專案中所有實體的id全部是通過資料庫自增的方式設定的,這樣當資料量很龐大的時候,就會出現錄入資料超級慢的問題,因為資料庫要遍歷整個表的資料,獲取到最大id才能插入一條資料。
提出解決方案:
新建一個ids表專門儲存每張表的最大id和表名字,這樣,當向某個表中插入資料的時候,先在ids表中查一下這個表對應的最大id,這樣就不用遍歷整個表了。
開始開發:
因為專案中已經寫死,插入資料庫資料全部用的是自增。讓在每個插入資料的程式碼中加查詢ids表實在是個不可取的方法,工作量可想而知。

因為我們插入資料的時候全部用的是bugumongo框架(當然如果你們的是MySQL資料庫的話,是其他框架咯),先用反編譯軟體檢視儲存資料庫資料的原始碼。

檢視原始碼。匯出原始碼包

eclipse關聯原始碼包

修改原始碼的方式,可以直接利用反編譯軟體得到原始碼包,然後修改原始碼,重新生成自己的jar,替換原來的jar包就可以了。(當這個過程有點繁瑣)
這裡採用重寫獲取最大id的方法。只要保證包名和原始碼中的完全一致就行。


這樣就大功告成了。
當然有人可能會說用spring aop的方式加前置通知來實現這個功能。(大部分專案中這也是可以的,但這個方式有侷限性。)
如有不懂的地方請聯絡本人qq:1913284695

相關文章