1,load()方法從來就是假定數(shù)據(jù)在數(shù)據(jù)庫中是存在的,在使用時(shí)如果不存在則會(huì)拋出ObjectNotFoundException;而get()方法不會(huì)假定數(shù)據(jù)在數(shù)據(jù)庫中存在,如果不存在則返回null
2,load()方法返回的是實(shí)體類的代理類,因此load()可以使用延遲加載策略來加載對(duì)象
get()方法返回的不一定是實(shí)體類,可能是代理類,因?yàn)間et()方法如果在session緩存(一級(jí)緩存)中找到了該id對(duì)應(yīng)的對(duì)象,如果剛好該對(duì)象前面是被代理過的,如被load方法使用過,或者被其他關(guān)聯(lián)對(duì)象延遲加載過,那么返回的還是原先的代理對(duì)象,而不是實(shí)體類對(duì)象。
3,load()方法查詢數(shù)據(jù)時(shí)會(huì)先從session緩存(一級(jí)緩存)中查找,如果沒有找到則會(huì)創(chuàng)建代理類,該代理類僅僅初始化了OID屬性,當(dāng)?shù)谝淮卧L問其他屬性值時(shí),則會(huì)依次從二級(jí)緩存-->數(shù)據(jù)庫查找,直到找到數(shù)據(jù),最后將所有屬性值賦給代理類。而get()方法則會(huì)直接按照一級(jí)緩存-->二級(jí)緩存-->數(shù)據(jù)庫的順序查找。
看到網(wǎng)上的全都是復(fù)制的,而且錯(cuò)誤不少,怎么就沒有人修正一下呢?
2,load()方法返回的是實(shí)體類的代理類,因此load()可以使用延遲加載策略來加載對(duì)象
get()方法返回的不一定是實(shí)體類,可能是代理類,因?yàn)間et()方法如果在session緩存(一級(jí)緩存)中找到了該id對(duì)應(yīng)的對(duì)象,如果剛好該對(duì)象前面是被代理過的,如被load方法使用過,或者被其他關(guān)聯(lián)對(duì)象延遲加載過,那么返回的還是原先的代理對(duì)象,而不是實(shí)體類對(duì)象。
3,load()方法查詢數(shù)據(jù)時(shí)會(huì)先從session緩存(一級(jí)緩存)中查找,如果沒有找到則會(huì)創(chuàng)建代理類,該代理類僅僅初始化了OID屬性,當(dāng)?shù)谝淮卧L問其他屬性值時(shí),則會(huì)依次從二級(jí)緩存-->數(shù)據(jù)庫查找,直到找到數(shù)據(jù),最后將所有屬性值賦給代理類。而get()方法則會(huì)直接按照一級(jí)緩存-->二級(jí)緩存-->數(shù)據(jù)庫的順序查找。
看到網(wǎng)上的全都是復(fù)制的,而且錯(cuò)誤不少,怎么就沒有人修正一下呢?