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