superwei

          導(dǎo)航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計(jì)

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          Hibernate的原理與配置快速入門(4)

           創(chuàng)建一個(gè)SessionFactory對(duì)象

            為了能創(chuàng)建一個(gè)SessionFactory對(duì)象,你必須在Hibernate初始化時(shí)創(chuàng)建一個(gè)Configuration類的實(shí)例,并將已寫好的映射文件交由它處理。這樣,Configuration對(duì)象就可以創(chuàng)建一個(gè)SessionFactory對(duì)象,當(dāng)SessionFactory對(duì)象創(chuàng)建成功后,Configuration對(duì)象就沒有用了,你可以簡(jiǎn)單地拋棄它。如下是示例代碼:

          Configuration cfg = new Configuration();
          cfg.addResource("hello/Message.hbm.xml");
          cfg.setProperties( System.getProperties() );
          SessionFactory sessions = cfg.buildSessionFactory();

            在以上代碼中,Message.hb.xml這個(gè)映射文件的位置比較特殊,它與當(dāng)前的classpath相關(guān)。例如classpath包含當(dāng)前目錄,那在上述代碼中的Message.hbm.xml映射文件就可以保存在當(dāng)前目錄下的hello目錄中。

            作為一種約定,Hibernate的映射文件默認(rèn)以.htm.xml作為其擴(kuò)展名。另一個(gè)約定是堅(jiān)持為每一個(gè)持久類寫一個(gè)配置文件,想一想如果你將所有持久類的映射寫入一個(gè)單獨(dú)的配置文件中的話,那這個(gè)配置文件肯定非常龐大,不易維護(hù)。但這里又出現(xiàn)了一個(gè)新問題:如果為每個(gè)類寫一個(gè)配置文件的話,這么多的配置文件應(yīng)該存放在哪里呢?

            Hibernate推薦你將每個(gè)映射文件保存在與持久類相同的目錄下,并且與持久類同名。例如我們第一個(gè)示例程序中的Message持久類放在hello目錄下,那你必須在這個(gè)目錄下存放名為Message.hbm.xml的映射文件。這樣一個(gè)持久類都有自己的一個(gè)映射文件,避免了出現(xiàn)像struts項(xiàng)目中的“struts-config.xml地獄”的情況。如果你不遵循這種規(guī)定,那你必須手動(dòng)地用addResource()方法將一個(gè)個(gè)的映射文件載入;但你如果遵循這種規(guī)定,那你可以方便地用addClass()方法同時(shí)將持久類和它的映射文件載入,以下是體現(xiàn)這種便利性的示例代碼:

          SessionFactory sessions = new Configuration()
          .addClass(org.hibernate.auction.model.Item.class)
          .addClass(org.hibernate.auction.model.Category.class)
          .addClass(org.hibernate.auction.model.Bid.class)
          .setProperties( System.getProperties() )
          .buildSessionFactory();

            當(dāng)然,Hibernate的映射文件還有很多其它的配置選項(xiàng),比如數(shù)據(jù)庫(kù)連接的設(shè)定,或是能夠改變Hibernate運(yùn)行時(shí)行為的一些設(shè)定。所有的設(shè)置可能是非常龐雜的,足以讓你喘不過(guò)氣來(lái),但是不必?fù)?dān)心,因?yàn)镠ibernate為絕大多數(shù)值都設(shè)定了一個(gè)合理缺省值,你只需要修改這些配置文件中的極小一部分值。

            你可以通過(guò)以下幾種方式來(lái)修改Hibernate的系統(tǒng)配置參數(shù):

            · 將一個(gè)Java.util.Properties實(shí)例作為參數(shù)傳給Configuration類的setProperties()方法。

            · 在Hibernate啟動(dòng)時(shí)用Java –Dproperty=value的方式設(shè)置值。

            · 在classpath可以找到的路徑下創(chuàng)建一個(gè)名為hibernate.properties的配置文件。

            · 在classpath可以找到的路徑下創(chuàng)建一個(gè)名為hibernate.cfg.xml的文件,并在其<property>標(biāo)簽中定義屬性值。

            以上就是對(duì)Hibernate的一個(gè)大致介紹,如果你想知道得更多,那本文還是遠(yuǎn)遠(yuǎn)不夠的,我將陸續(xù)推出更多關(guān)于Hibernate的資料。但有一點(diǎn)是毫無(wú)疑問的:它的確是一個(gè)非常優(yōu)秀的持久層解決方案!

          posted on 2005-10-31 11:31 小辭猬 閱讀(280) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA

          主站蜘蛛池模板: 达尔| 苏州市| 海阳市| 贵溪市| 塘沽区| 嘉祥县| 六枝特区| 林甸县| 水城县| 南木林县| 温州市| 灌阳县| 襄樊市| 宁国市| 鹤壁市| 扶沟县| 阳新县| 濮阳县| 武平县| 邯郸县| 古浪县| 海晏县| 江安县| 怀宁县| 平邑县| 无锡市| 内丘县| 东莞市| 德格县| 乌拉特后旗| 阿拉善盟| 武鸣县| 通州区| 通道| 浦东新区| 神农架林区| 华阴市| 河西区| 阜南县| 三门峡市| 织金县|