瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          日歷

          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          公告

          公眾號:
          QQjava交流群:51374316



          相冊

          搜索

          •  

          積分與排名

          • 積分 - 2842865
          • 排名 - 2

          最新隨筆

          hibernate annoation (一加載)

          Posted on 2009-11-02 14:58 瘋狂 閱讀(657) 評論(0)  編輯  收藏 所屬分類: java hibernate

           

           

          一,配置文件加載

           1,Configuration

                 如果不是annoation則可以使用Configuration configuration = new Configuration();

                 使用annoation則可以使用Configuration configuration = new AnnotationConfiguration();

            2,加載,使用onfiguration的configure方法根據(jù)方法參數(shù)可以有一下幾種加載方式:

                 (1) configure();

                       吃方法會去classpath下尋找我們的配置文件

                       其實調(diào)用了configure( "/hibernate.cfg.xml" );也就是 configure(String resource);方法

                 (2) configure(String resource);

                       最常用方的方法,其實調(diào)用了doConfigure(InputStream stream, String resourceName);

                      

                       說明一點內(nèi)部代碼:

                       ConfigHelper.getResourceAsStream( resource );

                     

          Java代碼 復(fù)制代碼
          1. String stripped = resource.startsWith("/") ?   
          2.         resource.substring(1) : resource;   
          3.   
          4. InputStream stream = null;   
          5. ClassLoader classLoader = Thread.currentThread().getContextClassLoader();   
          6. if (classLoader!=null) {   
          7.     stream = classLoader.getResourceAsStream( stripped );   
          8. }   
          9. if ( stream == null ) {   
          10.     stream = Environment.class.getResourceAsStream( resource );   
          11. }   
          12. if ( stream == null ) {   
          13.     stream = Environment.class.getClassLoader().getResourceAsStream( stripped );   
          14. }   
          15. if ( stream == null ) {   
          16.     throw new HibernateException( resource + " not found" );   
          17. }   
          18. return stream;   

                 第一行高數(shù)我們"/hibernate.cfg.xml" 可以去掉前面的“/”其中調(diào)用了Thread.currentThread().getContextClassLoader();一般也就是我們的AppClassLoader

               由stream = Environment.class.getResourceAsStream( resource );可以看出我們的"/hibernate.cfg.xml同樣可以放在與和Environment同樣的目錄 具體到我們的代碼里面在使用(3),(4),(5)時可以放在加載 類的包內(nèi)或其他

                 (3) configure(URL url);

                  doConfigure( url.openStream(), url.toString() );調(diào)用(5)

                 (4) configure(File configFile);

                   doConfigure( new FileInputStream( configFile ), configFile.toString() );調(diào)用(5)

                 (5) doConfigure(InputStream stream, String resourceName);

                    使用dom4j解析文件為Document然后

                     xmlHelper.createSAXReader( resourceName, errors, entityResolver )
               .read( new InputSource( stream ) );

                                   掉用(6)

                 (6) configure(Document document);

                 在這個方法里會解析所有配置信息和mapping類或者hb文件

          主站蜘蛛池模板: 澜沧| 南溪县| 三台县| 康保县| 萨嘎县| 定南县| 蒲江县| 全椒县| 曲水县| 丹东市| 临安市| 安龙县| 泰宁县| 盘山县| 林西县| 突泉县| 渝中区| 罗定市| 万州区| 邵武市| 邮箱| 德令哈市| 南丹县| 双柏县| 临沭县| 邳州市| 类乌齐县| 巴塘县| 巴东县| 吴忠市| 定南县| 台北市| 泾源县| 太和县| 名山县| 临安市| 县级市| 习水县| 杂多县| 繁峙县| 陵川县|