mybatis延遲加載,及其實現原理


mybatis支持association關聯對象和collection關聯集合對象的延遲加載,association指的是一對一,collection指的是一對多查詢

mybatis中延遲加載(lazyLoadingEnabled=true|false)的原理:

使用CGLIB創建目標對象的代理對象,調用方法時,進入攔截器方法,比如調用a.getB().getName(),攔截器invoke()方法發現a.getB()是null,就會單獨發送事先保存好的查詢關聯B對象的sql,把B查詢出來。然后調用a.setB(b),這樣a對象的b屬性就會有值了,接着完成a.getB().getName()方法的調用,這就是延遲加載的基本原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM