hibernate臟檢查與字節(jié)增強的疑問與思考

那時初入職場,mybatis并沒有在中國有絕對的占有率。我一個人在小公司里想用什么就用什么,所以理所當然的用起了hibernate。轉眼間已經過了很多年了,最近有朋友介紹項目,時間寬裕,技術路線自己定。我又把hibernate拿出來用用。

曾經對部分hibernate的理解已變淡。spring配置方式也從xml變?yōu)樽⒔庥旨訌姙閟pring boot。但是hibernate的臟檢查是不得不提的重點?,F(xiàn)在網上這方面的總結很少都是片段提到,甚至在文檔中的介紹也很簡單,我看了幾遍也沒得到全面的認識。因此我把最近的理解寫下來。

hibernate的臟檢查分為 掃描和觸發(fā)

掃描就是加載時保存一份快照,提交時把所有的實體和之前的快照對比,不同的說明就是臟數(shù)據,需要更新到數(shù)據庫。

觸發(fā)就是程序調用set時,如果值變了就標記為臟 ,需要更新到數(shù)據庫 。

默認為掃描,聽起來就性能很差,特別是實體比較多的時候,當然一般情況也性能也不會很差。在hibernate3以前,只有掃描這種模式。

觸發(fā)分兩種,一種是加載時織入觸發(fā)代碼,一種是編譯時織入觸發(fā)代碼。

加載時織入觸發(fā)代碼只有spring中開啟@EnableLoadTimeWeaving加配置才會生效(這個配置未來會取消)


spring boot開啟加載時臟檢查的配置

編譯時織入只需配置插件即可使用,在hibernate文檔的Bytecode Enhancement欄可以看到。

加載時織入和編譯時織入可以同時存在,當加載時織入程序檢測到實體已經被編譯時織入增強則不會繼續(xù)增強。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容