hibernate.cfg.xml 文件的解析與裝載
大家都清楚,Hibernate是通過*.hbm.xml文件來把值對象和數據庫表之間建立一個映射關係。但對於Hibernate如何解析這些文件和如何把相關信息裝載到Hibernate所管理的存儲對象中去,恐怕還不是非常瞭解吧。對這個問題的興趣源起於我想對對象的屬性能有更多的描述,比如說指定屬性在表示層的displayname等,如下描述:
<property name="bizobType" type="string" insert="false" update="false"> <column name="bizobType" length="32" not-null="true" index="idx_bizobType" sql-type="text"> <comment>The name of bizob type, reference to bizobModel</comment> </column> <field calculable="false" displayable="true" searchable="true" sortable="true"/> </property> |
其實就是希望對*.hbm.xml文件增加一些自己想要字段,並且能夠裝載到Hibernate所管理的存儲對象中去。不過這是後話,最重要的是瞭解Hibernate對mapping文件的裝載機制。爲此,我對Hibernate的裝載進行了調試跟蹤,挖取出了一些Hibernate所管理的存儲對象。讓我們首先對這些Hibernate對象有個總體的認識。
1. org.hibernate.Session
提供了數據持久化的相關操作,如delete, update, add 等。
2. org.hibernate.SessionFactory
生產Session的工廠類。
3. org.hibernate.cfg.Settings
用於存放運行時刻影響Hibernate行爲的配置項。一般在Hibernate.cfg.xml中描述,如:
<property name="generate_statistics">true</property> <property name="cache.use_second_level_cache">false</property> <property name="connection.pool_size">50</property> <property name="jdbc.fetch_size">50</property> <property name="jdbc.batch_size">100</property> <property name="hibernate.hbm2ddl.auto">update</property> |
4. org.hibernate.cfg.Configuration
Configuration用於保存我們所寫的配置文件信息,比如所有的Table和所有對應的Class及其屬性等。
5. org.hibernate.cfg.HbmBinder
用於解析mapping配置文件和把相應的解析項放入Mappings中。
6. org.hibernate.cfg.Mappings
存放Table和對應類的相關信息。
主要的一些接口和類已大體介紹完,下面介紹解析和裝載過程。
1. 總解析和裝載過程
2. Parse Mapping Elements