oracle數據庫表dept3
create table dept3 as select * from dept;
alter table dept3 modify(deptno number primary key);
使用list查詢
使用iterate方法查詢
* list和iterate的區別?
* list在默認情況下,只向緩存中放入數據,而不利用緩存中的數據
* iterate在默認情況下有N+1問題,如果緩存中存在數據那麼會根據id到緩存獲取數據
也就說iterate是利用緩存的。
* N+1問題,在默認情況下使用query.iterate查詢,有可能出現N+1問題,所謂的N+1
是查詢對象的時候發出了N+1條sql語句
1:首先發出一條查詢id列表的sql
N:根據id列表發出n條查詢語句
使用iterate查詢實體對象的時候,會先發出一條查詢滿足條件Id的sql語句,然後會在緩存中根據實體類型和Id查找是否已經存在,如果已經存在,則直接將該數據對象作爲查詢結果,否則,會根據Id重新發一條sql語句到數據庫中查詢,當然該查詢結果也是會被放入到緩存中的。