posts - 0,  comments - 1,  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 : 所有情況下均進(jìn)行級聯(lián)操作。
          none:所有情況下均不進(jìn)行級聯(lián)操作。
          save
          -update:在執(zhí)行save-update時(shí)
          進(jìn)行級聯(lián)操作。
          delete:在執(zhí)行delete時(shí)進(jìn)行級聯(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());//當(dāng)延遲加載lazy=true時(shí),強(qiáng)制加載及聯(lián)對象
                             
                             Set ul 
          = eu.getEmylinkUlinks(); 
                                               
                             Iterator
          <EmylinkUlink> it = ul.iterator();//lazy=true并且不使用強(qiáng)制加載,則此時(shí)才真真及聯(lián)加載
                             
                             
          while(it.hasNext()){
                              System.out.println(it.next().getLinkName());
                             }
           EmylinkSessionFactory.closeSession();  

          * 延遲加載   
             如果lazy=true(延遲加載), 加載EmylinkUpcode時(shí),hibernate不會立即加載EmylinkUlink,只有當(dāng)(Iterator<EmylinkUlink> it = ul.iterator();)執(zhí)行時(shí),hibernate才加載EmylinkUlink實(shí)例; 如果在加載前就關(guān)閉session,則報(bào)異常LazyInitializationException ; 可以使用Hibernate.initialize(Object o)強(qiáng)制及聯(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();//無需進(jìn)行強(qiáng)制類型轉(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>

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

          posted on 2008-03-27 17:33 火焰出林 閱讀(1220) 評論(0)  編輯  收藏 所屬分類: J2EE
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿(1)

          隨筆分類

          文章分類(25)

          文章檔案(23)

          新聞檔案(8)

          相冊

          最新隨筆

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 武清区| 简阳市| 蕉岭县| 漳州市| 松江区| 久治县| 水城县| 广平县| 克拉玛依市| 西宁市| 汝州市| 武功县| 岑溪市| 泸西县| 且末县| 阿拉善盟| 屏南县| 弋阳县| 浦城县| 侯马市| 尚志市| 怀柔区| 贡觉县| 独山县| 邵东县| 延津县| 云林县| 嘉义县| 平乐县| 克什克腾旗| 旅游| 天峨县| 延庆县| 英山县| 高碑店市| 泸定县| 苏尼特左旗| 祁连县| 酉阳| 友谊县| 阿城市|