posts - 10, comments - 9, trackbacks - 0, articles - 17

          Hibernate學習筆記1--映射起步

          Posted on 2008-12-09 15:10 wesley1987 閱讀(135) 評論(0)  編輯  收藏
          1,操作對象,將數據庫里的表映射為持久化類。
              一個商品類 Good,一個供應商 Offer類,一個Offer可以提供多個商品。
          商品表字段: goodId, offerId, goodName, price .
          供應商字段:    offerId ,offerName.
          Good.hbm.xml
          :<hibernate-mapping>
              <class name="com.neusoft.Good" table="GOOD" schema="WULIU">
                  <id name="goodid" type="java.lang.Long">
                      <column name="GOODID" precision="10" scale="0" />
                      <generator class="assigned" />
                  </id>
                  <many-to-one name="offer" class="com.myweb.Offer" fetch="select">
                      <column name="OFFERID" precision="10" scale="0" />
                  </many-to-one>

                  <property name="goodname" type="java.lang.String">
                      <column name="GOODNAME" length="40" />
                  </property>
                  <property name="price" type="java.lang.Double">
                      <column name="PRICE" precision="10" />
                  </property>

                  </property>
              </class>
          </hibernate-mapping>

          Offer.hbm.xml

          <hibernate-mapping>
              <class name="com.neusoft.Offer" table="OFFER" schema="WULIU">
                  <id name="offerid" type="java.lang.Long">
                      <column name="OFFERID" precision="10" scale="0" />
                      <generator class="assigned" />
                  </id>
                  <property name="offername" type="java.lang.String">
                      <column name="OFFERNAME" length="30" />
                  </property>
                  <set name="goods" inverse="true" lazy="true" cascade="delete" >
                      <key>
                          <column name="OFFERID" precision="10" scale="0" />
                      </key>

                      <one-to-many class="com.neusoft.Good" />
          <!--java.util.Set : private Set goods = new HashSet(0);-->

                  </set>
              </class>
          </hibernate-mapping>

          lazy="true" 與特定的Offer對象相對應的Good不會像Offer對象一樣由同一個SQL查詢獲取
          inverse="true" 表示用此表示兩者之間的關系。
          cascade="delete" 級聯刪除

          由此配置文件可生成對應的持久化類(即JavaBeans類)  Good.java, Offer.java

          2. org.hibernate.cfg.Configuration 創建一個HibernateSessionFactory。
          import org.hibernate.Session;
          import org.hibernate.cfg.Configuration;

          public class HibernateSessionFactory {
                    
                    private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";//xml中配置了數據庫的連接信息。
                  private static org.hibernate.SessionFactory sessionFactory;
                  
          private static String configFile = CONFIG_FILE_LOCATION;

              
          static {
                  
          try {
                      configuration.configure(configFile);
                      sessionFactory 
          = configuration.buildSessionFactory();
                  } 
          catch (Exception e) {
                      System.err
                              .println(
          "%%%% Error Creating SessionFactory %%%%");
                      e.printStackTrace();
                  }
              }
              
          private HibernateSessionFactory() {
              }

              public static org.hibernate.SessionFactory getSessionFactory() {
                    return sessionFactory;
               }

          }
          (這是用Myeclipse自動生成的代碼中一小段)
          創建了SessionFactory,就可以用getSession方法來實現操作了,如
          public void save(Good transientInstance) {
                    log.debug("saving Good instance");
                try {
                         getSession().save(transientInstance);
                         log.debug("save successful");
                } catch (RuntimeException re) {
                         log.error("save failed", re);
                         throw re;
                }
           }





          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 仲巴县| 天祝| 思茅市| 蒙山县| 岑溪市| 内乡县| 乌兰浩特市| 宜兰市| 津南区| 溧水县| 吕梁市| 秀山| 左云县| 和田县| 东乡族自治县| 辽阳市| 三原县| 铜川市| 连州市| 临澧县| 玛多县| 洞口县| 集安市| 马龙县| 仙居县| 贵定县| 苏尼特右旗| 定西市| 高平市| 常山县| 桃园县| 抚松县| 鱼台县| 阿合奇县| 盱眙县| 高邮市| 辽宁省| 廊坊市| 建瓯市| 宁化县| 孟州市|