配置完ibatis的關係後,做單元測試發現關聯的物件並沒有被查詢出來,review了一遍,沒發現有什麼問題,查了一下,發現是延遲載入的問題
ibatis支援延遲載入,可以在sqlmapconfig.xml中配置lazyloadingenabled來設定,預設情況下為true,即預設開啟延遲載入。
使用延遲載入時要求符合一定的規範,如果直接使用連線語句查詢出所有物件的話就不能延遲載入了。
例如:乙個使用者有多個位址,對應表user和address。
select userid from demouser
select userid,address from demoaddress
where userid = #value#
當訪問getuserlist時,查詢出所有使用者,直到使用address時才會去自動執行getaddresslist,獲取address資訊。
Ibatis延遲載入
延遲載入 在執行上篇的例子時,通過觀察期間的日誌輸出順序我們可以發現,在我們執行sqlmap.queryforlist user.getusers 時,實際上ibatis只向資料庫傳送了一條select id,name,from t user sql。而用於獲取address記錄的sql,只有在我們...
ibatis的延遲載入
ibatis也支援延遲載入,可以在sqlmapconfig.xml中配置lazyloadingenabled來設定,預設情況下為true,即預設開啟延遲載入。使用延遲載入時要求符合一定的規範,如果直接使用連線語句查詢出所有物件的話就不能延遲載入了。select userid from demouse...
iBATIS延遲載入的那點事
延遲載入 lazy load 是hibernate3 關聯關係物件預設的載入方式,延遲載入機制是為了避免一些無謂的效能開銷而提出來的,在我們執行 sqlmap.queryforlist 時,實際上 ibatis 只向資料庫傳送了一條 select id,name,from t user sql 而用...