OpenSource的东西有点好处就是有问题随时可以看代码解决。
但是读代码也有诀窍,就是尽可能的抓住和你有关的那部分,不要在一大堆代码里浪费时间。

第一个挑出org.hibernate.cfg.Configuration。因为这个东西用得最多。

例如addXXXX方法最后都调用到add方法,一下子就可以跳过N多段代码直接看add方法

     protected   void  add(org.dom4j.Document doc)  throws  MappingException {
        HbmBinder.bindRoot( doc, createMappings(), CollectionHelper.EMPTY_MAP );
    }


bindRoot方法稍微看了一下,一看到是解析xml的,就可以跳过不看。其实猜也能猜到是解析hbm.xml的。

有意思的是".hbm.xml"在里面是固定写死的,连个constant 变量都没有做,看来作者以后是不打算改了

且看 addDirectory方法
     /**
     * Read all mapping documents from a directory tree.
     * <p/>
     * Assumes that any file named <tt>*.hbm.xml</tt> is a mapping document.
     *
     * 
@param  dir The directory
     * 
@return  this (for method chaining purposes)
     * 
@throws  MappingException Indicates problems reading the jar file or
     * processing the contained mapping documents.
     
*/
    
public  Configuration addDirectory(File dir)  throws  MappingException {
        File[] files 
=  dir.listFiles();
        
for  (  int  i  =   0 ; i  <  files.length ; i ++  ) {
            
if  ( files[i].isDirectory() ) {
                addDirectory( files[i] );
            }
            
else   if  ( files[i].getName().endsWith(  " .hbm.xml "  ) ) {
                addFile( files[i] );
            }
        }
        
return   this ;
    }

这段代码告诉我们什么?告诉我们" .hbm.xml"素区分大小写的。。。。.HBM.XML这样的后缀名作者不打算接受。。。