在Configuration类中,我们通过add方法添加一个映射,而add方法又把这个任务交给了Binder类的bindrooR方法。
 



首先,我们来看一段映射配置:

添加映射的过程<?xml version="1.0"?>
添加映射的过程
<!DOCTYPE hibernate-mapping
添加映射的过程    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
添加映射的过程    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
>
添加映射的过程
添加映射的过程
<hibernate-mapping>
添加映射的过程
添加映射的过程    
<class name="net.sf.hibernate.examples.quickstart.Cat" table="CAT">
添加映射的过程
添加映射的过程        
<!-- A 32 hex character is our surrogate key. It's automatically
添加映射的过程            generated by Hibernate with the UUID pattern. 
-->
添加映射的过程        
<id name="id" type="string" unsaved-value="null" >
添加映射的过程            
<column name="CAT_ID" sql-type="char(32)" not-null="true"/>
添加映射的过程            
<generator class="uuid.hex"/>
添加映射的过程        
</id>
添加映射的过程
添加映射的过程        
<!-- A cat has to have a name, but it shouldn' be too long. -->
添加映射的过程        
<property name="name">
添加映射的过程            
<column name="NAME" sql-type="varchar(16)" not-null="true"/>
添加映射的过程        
</property>
添加映射的过程
添加映射的过程        
<property name="sex"/>
添加映射的过程
添加映射的过程        
<property name="weight"/>
添加映射的过程
添加映射的过程    
</class>
添加映射的过程
添加映射的过程
</hibernate-mapping>
添加映射的过程

 

我们结合这个映射配置文件来看看bindRoot方法(由于方法过长,这里只截取其中处理class的一部分):

 

所有读取配置信息的工作都是使用上面这种模式:一步一步地把责任往下放,这种做法好处就在于使程序结构清晰,可惜在Binder类中做的还是不够——方法还是太长。

因为后面的代码牵涉到的内容还太多,所以暂时跟踪到此,待mapping包分析完成再来看它。

相关文章: