ssm學習筆記——mybatis——延遲加載、緩存

mybatis的延遲加載

問題

在一對多中,當我們有一個用戶,它有100個賬戶
在查詢用戶的時候,要不要把關聯的賬戶查出來
在查詢賬戶的時候,要不要把關聯的用戶查出來

在查詢用戶時,用戶下的賬戶信息應該是,什麼時候使用,什麼時候查詢的。
在查詢賬戶時,賬戶所屬的用戶信息應該是隨着賬戶查詢時一起查詢出來的。

延遲加載

在真正使用數據時才發起查詢,不用的時候不查詢。按需加載(懶加載)

立即加載

不管用不用,只要一調用方法,馬上發起查詢

通常情況

在對應的四種表關係中:一對一,一對多,多對一,多對多
一對多,多對多:採用延遲加載
一對一,多對一:採用立即加載

mybatis中的緩存

緩存:存在於內存在的臨時數據
用處:減少和數據庫的交互次數,提高執行效率

適用於緩存:
經常查詢並且不經常改變的
數據的正確與否對最終結果影響不大

不適用緩存:
經常改變的數據
數據的正確與否對最終結果影響很大的

一級緩存

指的是mybatis中SqlSession對象的緩存
當我們執行查詢之後,查詢的結果會同時存入SqlSession爲我們提供一塊區域
該區域的結果是一個Map,當我們再次查詢同樣的數據,mybatis會先去SqlSession中查詢是否有,有的話直接拿出來用
當SqlSession對象消失時,mybatis的一級緩存也就消失了
當調用SqlSession的修改、添加。刪除,commit(),close()等方法時,就會清空一級緩存

二級緩存

指的是mybatis中SqlSessionFactory對象的緩存,由同一個SqlSessionFactory對象創建的SqlSession共享其緩存。

使用步驟
①讓mybatis框架支持二級緩存(在SqlMapConfig.xml中配置)
②讓當前的映射文件支持二級緩存(在UserDao.xml中配置)
③讓當前的操作支持二級緩存(在select標籤中配置)

二級緩存存放的是數據而不是對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章