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

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

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

    隨筆-86  評論-33  文章-0  trackbacks-0
    EmylinkUpcode  1...................n  EmylinkUlink   一對多關(guān)系

    1.hbm.xml描述
      EmylinkUpcode.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "<hibernate-mapping package="hbm">
     <class name="EmylinkUpcode" table="emylink_upcode">
      <id
       name="id" type="integer" column="plink_code"
      >
       <generator class="org.hibernate.id.IncrementGenerator"/>
      </id>

      <property
       name="account"
       column="account"
       type="string"
       not-null="true"
       length="20"
      />
      <property
       name="plinkName"
       column="plink_name"
       type="string"
       not-null="true"
       length="50"
      />
      <property
       name="plinkExplain"
       column="plink_explain"
       type="string"
       not-null="false"
       length="100"
      />
      <property
       name="typeCode"
       column="type_code"
       type="string"
       not-null="false"
       length="8"
      />
     
      <set name="emylinkUlinks" inverse="true" lazy="true"  cascade="all"
           <key column="plink_code"/>
          <one-to-many class="EmylinkUlink"/>
      </set>

     </class> 
    </hibernate-mapping>

    操作級聯(lián)(cascade)關(guān)系。
    可選值:
    all : 所有情況下均進行級聯(lián)操作。
    none:所有情況下均不進行級聯(lián)操作。
    save
    -update:在執(zhí)行save-update時
    進行級聯(lián)操作。
    delete:在執(zhí)行delete時進行級聯(lián)操作。

     EmylinkUlink.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
     "-//Hibernate/Hibernate Mapping DTD//EN"
     "

    <hibernate-mapping package="hbm">
     <class
      name="EmylinkUlink"
      table="emylink_ulink"
     >
      <id
       name="id"
       type="integer"
       column="id"
      >
       <generator class="org.hibernate.id.IncrementGenerator"/>
      </id>

      <property
       name="account"
       column="account"
       type="string"
       not-null="true"
       length="20"
      />
      <property
       name="link"
       column="link"
       type="string"
       not-null="true"
       length="200"
      />
      <property
       name="linkName"
       column="link_name"
       type="string"
       not-null="true"
       length="20"
      />
      <property
       name="explain"
       column="explain"
       type="string"
       not-null="false"
       length="500"
      />
      <property
       name="indate"
       column="indate"
       type="date"
       not-null="true"
       length="16"
       insert="false"                //不參與插入操作
       update="false"             //不參與更新操作
      />
      <property
       name="sort"
       column="sort"
       type="string"
       not-null="false"
       length="3"
      />
      <property
       name="private"
       column="private"
       type="string"
       not-null="false"
       length="1"
      />
      <many-to-one
       name="plinkCode"
       column="plink_code"
       class="EmylinkUpcode"
       not-null="true"
      >
      </many-to-one>
     </class> 
    </hibernate-mapping>


    2.POJO對象
      EmylinkUpcode.java
    //
        
    // primary key
        private java.lang.Integer id;

        
    // fields
        private java.lang.String account;
        
    private java.lang.String plinkName;
        
    private java.lang.String plinkExplain;
        
    private java.lang.String typeCode;

        
    // collections
        private java.util.Set<hbm.EmylinkUlink> emylinkUlinks;

    //

      EmylinkUlink.java
    //
    private int hashCode = Integer.MIN_VALUE;

        
    // primary key
        private java.lang.Integer id;

        
    // fields
        private java.lang.String account;
        
    private java.lang.String link;
        
    private java.lang.String linkName;
        
    private java.lang.String explain;
        
    private java.util.Date indate;
        
    private java.lang.String sort;
        
    private java.lang.String m_private;

        
    // many to one
        private hbm.EmylinkUpcode plinkCode;
    //

    通過EmylinkUpcode加載EmylinkUlink(注意EmylinkUpcode.hbm.xml中聲明了延遲加載)
    Session session = EmylinkSessionFactory.currentSession();
             Query q 
    = session.createQuery("from EmylinkUpcode where account='derek'");
                    List l 
    = q.list();
                   
                       EmylinkUpcode eu 
    =  (EmylinkUpcode)l.get(0);
                       System.out.println(eu.getPlinkName());
                       
    //Hibernate.initialize(eu.getEmylinkUlinks());//當延遲加載lazy=true時,強制加載及聯(lián)對象
                       
                       Set ul 
    = eu.getEmylinkUlinks(); 
                                         
                       Iterator
    <EmylinkUlink> it = ul.iterator();//lazy=true并且不使用強制加載,則此時才真真及聯(lián)加載
                       
                       
    while(it.hasNext()){
                        System.out.println(it.next().getLinkName());
                       }
     EmylinkSessionFactory.closeSession();  

    * 延遲加載   
       如果lazy=true(延遲加載), 加載EmylinkUpcode時,hibernate不會立即加載EmylinkUlink,只有當(Iterator<EmylinkUlink> it = ul.iterator();)執(zhí)行時,hibernate才加載EmylinkUlink實例; 如果在加載前就關(guān)閉session,則報異常LazyInitializationException ; 可以使用Hibernate.initialize(Object o)強制及聯(lián)加載

    *J2SE5.0的泛型

    public void setEmylinkUlinks (java.util.Set<hbm.EmylinkUlink> emylinkUlinks) {
            
    this.emylinkUlinks = emylinkUlinks;
        }
    Iterator<EmylinkUlink> it = ul.iterator();                   
                       
    while(it.hasNext()){
                        EmylinkUlink el 
    = it.next();//無需進行強制類型轉(zhuǎn)換
                        System.out.println(el.getLinkName());
                       }

    emylinkUlinks集合中只能存放EmylinkUlink對象,從集合中獲取對象無需再類型轉(zhuǎn)換
     
    struts+spring+hibernate關(guān)于hibernate中l(wèi)azy="true"的問題。web.xml中用   

              <filter>   
                      
    <filter-name>openSessionInViewFilter</filter-name>   
                      
    <filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class>   
              
    </filter>   
        
              
    <filter-mapping>   
                      
    <filter-name>openSessionInViewFilter</filter-name>   
                      
    <url-pattern>*.do</url-pattern>   
              
    </filter-mapping>

      它的原理就是:打開頁面的時候打開session,一直到頁面裝載完畢才關(guān)閉session,這樣就解決了lazy="true"時session   is   closed的問題。
      關(guān)于OpenSessionInViewFilter 延遲加載失效問題
    http://www.javaeye.com/topic/15057
              OpenSessionInView的效率問題  http://www.javaeye.com/topic/17501

    posted on 2006-09-07 16:20 Derek.Guo 閱讀(4336) 評論(0)  編輯  收藏 所屬分類: Java
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 亚洲国产精品18久久久久久| 亚洲高清视频在线观看| 亚洲国产美女精品久久久| 成年人性生活免费视频| 亚洲熟女乱色一区二区三区 | 国产精品亚洲综合一区| 亚洲AV无码国产一区二区三区| 97性无码区免费| 亚洲日本VA午夜在线电影| 国产高清免费在线| 色费女人18女人毛片免费视频| 四虎永久精品免费观看| 五月天婷婷免费视频| 亚洲国产精品成人久久| 99久久免费精品视频| 中文字幕亚洲男人的天堂网络| 在线免费观看一级片| 特级毛片全部免费播放| 成人亚洲性情网站WWW在线观看| a级精品九九九大片免费看| 久久久无码精品亚洲日韩按摩| 久久久久久国产a免费观看黄色大片| 亚洲狠狠婷婷综合久久蜜芽| 亚洲AV无码一区二区三区在线观看| 99久久免费国产特黄| 亚洲黑人嫩小videos| 日本免费中文字幕在线看| www一区二区www免费| 亚洲精品中文字幕无码AV| 四虎永久在线精品免费影视| 中文字幕日本人妻久久久免费| 亚洲国产精品网站久久| 免费在线不卡视频| 四虎影视在线影院在线观看免费视频 | 亚洲国产人成网站在线电影动漫| 最近在线2018视频免费观看| 日韩亚洲人成在线综合| 久久久综合亚洲色一区二区三区| 女人18毛片水真多免费播放| 视频免费在线观看| WWW国产亚洲精品久久麻豆|