加載:把硬盤裏的東西裝到內存
延遲加載:(也叫懶加載 LazyLoading)
1.什麼是延遲加載?
指查詢的延遲加載,當代碼中執行到查詢語句,並不是馬上到數據庫中執行查詢語句,
而是根據設置好的延遲策略向後推遲查詢語句的執行,這就是延遲加載.
(只要是查詢,都能做延遲加載,但是不同的框架延遲加載不同.)
2.使用延遲加載的作用:
使用延遲加載可以減輕數據庫(DB)服務器的壓力.
3.MyBatis框架的延遲加載
(1)只能對關聯對象進行查詢時使用延遲加載策略.
對於主加載對象,均採用直接加載.
(注:hibernate中,主加載對象和關聯對象都可以使用延遲加載)
(2)要應用延遲加載查詢,只能使用多表單獨查詢,而不能使用多表連接查詢.因爲多表連接查詢的本質是查詢一張表,
是將多張表首先連接成了一張表,再進行的查詢.查詢一個信息,就會將所有的信息全部查詢到.
4.基本概念
(1)主加載對象
(2)關聯對象
(3)主表
(4)關聯表,也稱爲從表
5.延遲加載策略
延遲加載策略:是指到DB中真正執行select語句進行查詢的時機設置.
MyBatis中的延遲加載策略共分爲3種:
(1)直接加載
當代碼中執行到查詢語句時,馬上就到DB中執行select語句
(2)侵入式延遲加載
指將關聯對象的詳情(詳情即具體數據)侵入到了主加載對象詳情之中,作爲主加載對象詳情的一部分出現.
當要訪問主加載對象的詳情時,需要將主加載對象所有詳情進行查詢,但由於關聯對象詳情作爲主加載對象
詳情的一部分出現了,所以,這個查詢不僅會查詢主表,還會查詢關聯表.
(3)深度延遲加載
指當需要訪問主加載對象詳情時,只會查詢主表,而不會查詢關聯表.只有當真正訪問關聯對象詳情時,纔會查詢關聯表.