瘋狂

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

          hibernate annoation (一加載)

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

           

           

          一,配置文件加載

           1,Configuration

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

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

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

                 (1) configure();

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

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

                 (2) configure(String resource);

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

                      

                       說明一點內部代碼:

                       ConfigHelper.getResourceAsStream( resource );

                     

          Java代碼 復制代碼
          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;   

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

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

                 (3) configure(URL url);

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

                 (4) configure(File configFile);

                   doConfigure( new FileInputStream( configFile ), configFile.toString() );調用(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文件

          主站蜘蛛池模板: 湖口县| 涞水县| 定南县| 阿瓦提县| 普宁市| 顺义区| 马边| 拉萨市| 龙游县| 威远县| 连云港市| 陕西省| 田阳县| 读书| 内乡县| 南江县| 临泽县| 曲靖市| 疏勒县| 平定县| 汉沽区| 沙田区| 镇康县| 武陟县| 龙山县| 郧西县| 临汾市| 运城市| 西宁市| 辉县市| 弋阳县| 濉溪县| 岳普湖县| 理塘县| 乌拉特前旗| 凤城市| 胶南市| 高雄县| 潜山县| 高要市| 德钦县|