<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   一對多關系

    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>

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

     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時,強制加載及聯對象
                       
                       Set ul 
    = eu.getEmylinkUlinks(); 
                                         
                       Iterator
    <EmylinkUlink> it = ul.iterator();//lazy=true并且不使用強制加載,則此時才真真及聯加載
                       
                       
    while(it.hasNext()){
                        System.out.println(it.next().getLinkName());
                       }
     EmylinkSessionFactory.closeSession();  

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

    *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();//無需進行強制類型轉換
                        System.out.println(el.getLinkName());
                       }

    emylinkUlinks集合中只能存放EmylinkUlink對象,從集合中獲取對象無需再類型轉換
     
    struts+spring+hibernate關于hibernate中lazy="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,一直到頁面裝載完畢才關閉session,這樣就解決了lazy="true"時session   is   closed的問題。
      關于OpenSessionInViewFilter 延遲加載失效問題
    http://www.javaeye.com/topic/15057
              OpenSessionInView的效率問題  http://www.javaeye.com/topic/17501

    posted on 2006-09-07 16:20 Derek.Guo 閱讀(4329) 評論(0)  編輯  收藏 所屬分類: Java
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 亚洲日本在线免费观看| 亚洲AV无码乱码国产麻豆| 亚洲欧洲无码一区二区三区| 久久九九兔免费精品6| 亚洲人成电影福利在线播放| 日本免费中文字幕| 亚洲AV永久纯肉无码精品动漫| 久久国产免费观看精品| 亚洲免费在线视频| 黄色永久免费网站| 亚洲综合一区国产精品| 免费高清在线爱做视频| 亚洲a无码综合a国产av中文| 国产乱人免费视频| 一级成人a做片免费| 国产亚洲精品资源在线26u| 黄网站免费在线观看| 亚洲最新永久在线观看| 国产福利在线观看免费第一福利| 亚洲欧美熟妇综合久久久久| 免费人成视频在线观看视频| 国产精品免费在线播放| 亚洲高清免费在线观看| 成人无遮挡毛片免费看| 免费很黄无遮挡的视频毛片| 久久精品九九亚洲精品天堂| 最近中文字幕高清免费中文字幕mv| 最新国产精品亚洲| 亚洲精品国产综合久久一线| a级毛片免费完整视频| 亚洲一区二区三区91| 国产乱色精品成人免费视频| 国产一区二区三区免费| 亚洲一卡2卡3卡4卡乱码 在线 | 99视频在线看观免费| 亚洲videos| 国产成人亚洲综合无码| 久久国产高潮流白浆免费观看| 亚洲AV成人一区二区三区观看| 亚洲无人区一区二区三区| 久久久久国产精品免费免费搜索|