隨筆-29  評論-5  文章-0  trackbacks-0
          來自于:http://linweihan.javaeye.com/blog/144652
          2.6  構建SessionFactory
          Hibernate的SessionFactory接口提供Session類的實例,Session類用于完成對數據庫的操作。由于 SessionFactory實例是線程安全的(而Session實例不是線程安全的),所以每個操作都可以共用同一個SessionFactory來獲取Session。

          Hibernate配置文件分為兩種格式,一種是xml格式的配置文件,另一種是Java屬性文件格式的配置文件,因此構建SessionFactory也有兩種方法,下面分別介紹。

          2.6.1  從XML文件讀取配置信息構建 SessionFactory
          從XML文件讀取配置信息構建SessionFactory的具體步驟如下。

          1)創建一個Configuration對象,并通過該對象的configura()方法加載Hibernate 配置文件,代碼如下。

          Configuration config 
          = new Configuration().configure();

          configura()方法:用于告訴Hibernate加載hibernate.cfg.xml文件。 Configuration在實例化時默認加載classpath中的hibernate.cfg.xml,當然也可以加載名稱不是hibernate.cfg.xml的配置文件,例如wghhibernate.cfg.xml,可以通過以下代碼實現。

          Configuration config 
          = new Configuration().configure("wghhibernate.cfg.xml");

          2)完成配置文件和映射文件的加載后,將得到一個包括所有Hibernate運行期參數的 Configuration實例,通過Configuration實例

          的buildSessionFactory()方法可以構建一個惟一的SessionFactory,代碼如下。

          SessionFactory sessionFactory 
          = config.buildSessionFactory();

          構建SessionFactory要放在靜態代碼塊中,因為它只在該類被加載時執行一次。一個典型的構建 SessionFactory的代碼如下。

          例程2
          -9:光盤\mr\02\sl\09\CoreSession.java

          java 代碼

           
          import org.hibernate.*;   
           
          import org.hibernate.cfg.*;   
           
          public class CoreSession {   
           
          static SessionFactory sessionFactory;   
          //注意到這里的SessionFactory都是static的
          //初始化Hibernate,創建 SessionFactory實例,只在該類被加載到內存時執行一次   
           
          static{   
           
              try{   
           
                   Configuration config = new Configuration().configure();   
           
                   sessionFactory = config.buildSessionFactory();   
           
              } catch (Exception e) {   
           
                  System.out.println(e.getMessage());   
           
              }   
           
          }   
           
          }  
           

          2.6.2  從Java屬性文件讀取配置信息構建SessionFactory
          從Java屬性文件讀取配置信息構建SessionFactory的具體步驟如下。

          1)創建一個Configuration對象,此時Hibernate會默認加載classpath中的配置文件hibernate.properties,代碼如下。

          Configuration config 
          = new Configuration();

          2)由于在配置文件中缺少相應的配置映射文件的信息,所以此處需要通過編碼方式加載,這可以通過Configuration對象的

          addClass()方法實現,具體代碼如下。

          config.addClass(BranchForm.
          class);

          addClass()方法用于加載實體類。

          3)完成配置文件和映射文件的加載后,將得到一個包括所有Hibernate運行期參數的Configuration實例,通過Configuration實例

          的buildSessionFactory()方法可以構建一個惟一的SessionFactory,代碼如下。

          SessionFactory sessionFactory 
          = config.buildSessionFactory();

          構建SessionFactory要放在靜態代碼塊中,因為它只需在該類被加載時執行一次,一個典型的構建SessionFactory的代碼如下。

          例程2
          -10:光盤\mr\02\sl\10 \CoreSession.java

          java 代碼

          import org.hibernate.*;   
           
          import org.hibernate.cfg.*;   
           
          public class CoreSession {   
           
          static SessionFactory sessionFactory;   
           
          //初始化Hibernate,創建 SessionFactory實例,只在該類被加載到內存時執行一次   
           
          static{   
           
              try{   
           
                 Configuration config = new Configuration();   
           
                  config.addClass(BranchForm.class);   
           
                  sessionFactory = config.buildSessionFactory();   
           
              } catch (Exception e) {   
           
                  System.out.println(e.getMessage());   
           
              }   
           
          }   
           



          posted on 2010-06-08 20:48 豪情 閱讀(3406) 評論(0)  編輯  收藏 所屬分類: Hibernate 3
          主站蜘蛛池模板: 略阳县| 肇东市| 沙坪坝区| 元氏县| 广南县| 尚志市| 台东市| 西乌| 桂阳县| 凯里市| 巴林右旗| 蓝田县| 深州市| 永康市| 景洪市| 东莞市| 皋兰县| 红桥区| 大兴区| 太谷县| 辽阳市| 抚顺县| 酉阳| 红河县| 英德市| 台州市| 岚皋县| 竹溪县| 仁寿县| 淄博市| 棋牌| 郴州市| 平阳县| 旅游| 三明市| 安宁市| 温泉县| 浦江县| 临高县| 阜康市| 平定县|