somePerson.getFriend().getName();
somePerson.getFriend().getAge();
somePerson.getFriend().getGender();
somePerson.getFriend().getFather().getName();
這5行代碼如果運(yùn)行一次的話會(huì)進(jìn)行5次查詢,如果反復(fù)循環(huán)運(yùn)行會(huì)更多,但其中的前4次都是重復(fù)的。somePerson.getFriend().getAge();
somePerson.getFriend().getGender();
somePerson.getFriend().getFather().getName();
如果使用0.7.5版產(chǎn)生的源碼,這樣的代碼運(yùn)行一次只會(huì)進(jìn)行必要的兩次查詢,而且如果反復(fù)循環(huán)運(yùn)行的話也只會(huì)運(yùn)行這必要的兩次查詢。
關(guān)于對(duì)象共享,在之前的版本中,是沒(méi)有任何對(duì)象共享的,用同樣的主鍵進(jìn)行findByPk查詢所得到的對(duì)象是不同的,這在對(duì)程序中數(shù)據(jù)進(jìn)行同步的實(shí)現(xiàn)上增加了復(fù)雜度。而使用0.7.5版所生成的源碼,可以保證這樣的對(duì)象是相同的(不是相等而是相同),而且從別的find方法查詢到的相同主鍵的對(duì)象也能保證是唯一的(findFree,自定義find,自定義集合),新版中加入了一個(gè)WeakValueMap類對(duì)這些對(duì)象進(jìn)行管理,利用弱引用技術(shù)在不干涉垃圾回收的情況下對(duì)數(shù)據(jù)庫(kù)對(duì)象進(jìn)行高效率的共享和緩存管理。下載地址在http://www.aygfsteel.com/Files/kobe2000/sdo0.7.5.rar