<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 115  文章 - 481  trackbacks - 0
    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(19)

    隨筆檔案(115)

    文章檔案(4)

    新聞檔案(1)

    成員連接

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

      在超輕量級(jí)開源ORM系統(tǒng)EasyDBO,可以根據(jù)情況把屬性設(shè)置成延遲加載,從而大大提高應(yīng)用程序的性能。比如一個(gè)域?qū)ο笾兴ㄒ粋€(gè)order屬性,則可以像下面這樣設(shè)置:? <one-to-one name="order" type="com.easyjf.dbo.example.Order" column="orderId" key="cid" lazy="true">????????
    ??????? </one-to-one>
      
      EasyDBO中的延遲加載是使用CGLIB實(shí)現(xiàn)的,下面我們來(lái)看看延遲加載的實(shí)現(xiàn)原理:
      1、設(shè)計(jì)一個(gè)延遲加載器(回調(diào)),實(shí)現(xiàn)CGLIB的LazyLoader接口。
      2、在第一次創(chuàng)建域?qū)ο驞OM(PO)的時(shí)候,使用CGLIB的Enhancer創(chuàng)建一個(gè)需要延遲加載的屬性對(duì)象,這其中需要使用上面的延遲加載器作為參數(shù)。
      3、當(dāng)用戶在第一次訪問(wèn)到延遲加載的對(duì)象時(shí),則會(huì)調(diào)用延遲加載器中的loadObject方法來(lái)實(shí)際加載對(duì)象。
    ?
      下面是一個(gè)非常簡(jiǎn)單例子,通過(guò)后臺(tái)可以看到:在使用new TB(),然后訪問(wèn)其cid屬性的時(shí)候,延遲加載的Bean還沒(méi)有創(chuàng)建,只有在訪問(wèn)其TB的bean屬性時(shí),才會(huì)創(chuàng)建TestBean對(duì)象,并作相應(yīng)的初始化處理工作:
    ?
    BeanTest.java
    public class BeanTest extends TestCase {
    ?
    ?public void testBean()
    ?{?
    ?TB tb=new TB();
    ?System.out.println(tb.getCid());
    ?System.out.println("--");
    ?System.out.println(tb.getBean().getUserName());?
    ?}
    ?
    Lazy implements net.sf.cglib.proxy.LazyLoaderLazyLoader
    ?{
    ??public Object loadObject() throws Exception {
    ???// TODO Auto-generated method stub
    ???System.out.println("開始延遲加載!");
    ???TestBean bean=new TestBean();
    ???bean.setUserName("test");
    ???return bean;
    ??}
    ?}
    ?
    class TB{
    ?private String cid;
    ?private TestBean bean;
    ?LazyLoader lazy=new Lazy();
    ?public TB()
    ?{
    ??cid="1245454";
    ??bean=(TestBean)net.sf.cglib.proxy.Enhancer.create(TestBean.class,lazy);
    ?}
    ?public TestBean getBean() {
    ??return bean;
    ?}
    ?public void setBean(TestBean bean) {
    ??this.bean = bean;
    ?}
    ?public String getCid() {
    ??return cid;
    ?}
    ?public void setCid(String cid) {
    ??this.cid = cid;
    ?}
    ?}
    ?
    }
    ?
    TestBean.java
    public class TestBean {
    ?private String userName;
    ?private Integer sequence;
    ?public Integer getSequence() {
    ??return sequence;
    ?}
    ?public void setSequence(Integer sequence) {
    ??this.sequence = sequence;
    ?}
    ?public String getUserName() {
    ??return userName;
    ?}
    ?public void setUserName(String userName) {
    ??this.userName = userName;
    ?}
    ?public void test() {
    ??// TODO Auto-generated method stub
    ??
    ?}?
    }
      
    posted on 2006-10-20 09:35 簡(jiǎn)易java框架 閱讀(2491) 評(píng)論(1)  編輯  收藏

    FeedBack:
    # re: 使用CGLIB輕松實(shí)現(xiàn)延遲加載(Lazyloader) 2006-10-23 10:52 11
    增開7群,號(hào)碼 30440732
    8群 30756649
    9群 30178567
    10群 28694497
    我們的qq群:15096318 學(xué)習(xí)程序的都可以來(lái)
    www.mylinux.com.cn 包羅java,linux,數(shù)據(jù)庫(kù),安全等等技術(shù)資料,更有眾多軟件外包項(xiàng)目,所有項(xiàng)目直接與mylinux簽署合同,保證用戶的合法權(quán)利.
    qq群:15096318(已滿) 26343297(已滿) 26343309(已滿) 20767472(已滿) 30440614(已滿)21189212(已滿)

      回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 91麻豆国产免费观看| 成人在线免费观看| 亚洲中文无码线在线观看| 九九九精品成人免费视频| 污污免费在线观看| 久久久无码精品亚洲日韩按摩| 午夜时刻免费入口| a级毛片毛片免费观看久潮| 91在线亚洲综合在线| 国产亚洲精aa成人网站| 免费精品国产自产拍在线观看图片| 亚洲av无码专区亚洲av不卡| 亚洲精品高清无码视频| 人禽杂交18禁网站免费| 亚洲第一视频在线观看免费| 亚洲av日韩av无码av| 亚洲日韩精品无码一区二区三区 | 亚洲一区二区中文| 免费在线观看污网站| 亚洲免费福利视频| 国产伦精品一区二区免费| 亚洲欧洲日产国码久在线| 亚洲AV无码成人精品区蜜桃| 丁香亚洲综合五月天婷婷| 久草在视频免费福利| 大地影院MV在线观看视频免费| 亚洲欧洲专线一区| 亚洲成人网在线观看| 亚洲小说区图片区另类春色| 国产精品久久久久影院免费| 久久成人a毛片免费观看网站| 免费精品久久久久久中文字幕 | 久久最新免费视频| 亚洲成av人片在www鸭子| 亚洲精品视频专区| 久久精品国产亚洲夜色AV网站| 四虎永久成人免费影院域名| 一二三四在线观看免费高清中文在线观看 | 成年性生交大片免费看| 3d成人免费动漫在线观看| 99久久成人国产精品免费|