spring對hibernate配置文件(hibernate.cfg.xml)的集成相當好,常用spring的org.springframework.orm.hibernate.LocalSessionFactoryBean來取代hibernate.cfg.xml文件的功能。LocalSessionFactoryBean有幾種屬性用來查找hibernate映射文件,以下做簡單使用介紹。
它們的區別
mappingResources:指定classpath下具體映射文件名
<property name="mappingResources"> <list> <value>XXX.hbm.xml </value> <value>XXX.hbm.xml </value> <value>... </value> </list> </property>
有多少hbm文件就要一一指定,比較繁瑣,而且不易維護,有時在添加了新的class後會遺忘這裡配置上相應的hbm。
mappingLocations:可以指定任何文件路徑(包括映射文件的文件名)
file:
<property name="mappingLocations"> <list> <!-- file --> <value>/WEB-INF/petclinic.hbm.xml </value> <value>/WEB-INF/... </value> </list> </property>
classpath:
<property name="mappingLocations"> <list> <!-- classpath --> <value>classpath:/com/company/domain/petclinic.hbm.xml </value> <value>classpath:...</value> </list> </property>
也可以用通配符指定,'*'指定一個文件(路徑)名,'**'指定多個文件(路徑)名:
<property name="mappingLocations">
<value>classpath:/com/company/domain/*maps/*.hbm.xml </value>
</property>
上面的配置是在com/company/domain包下任何maps路徑下的hbm.xml文件都被加載為映射文件。
mappingDirectoryLocations:指定映射的文件路徑(只是映射文件所在的目錄)
file:
<property name="mappingDirectoryLocations">
<!-- file -->
<value>/WEB-INF/mymappingpath</value>
</property>
classpath:
<property name="mappingDirectoryLocations">
<!-- classpath -->
<value>classpath:/package/hbm</value>
</property>
mappingJarLocations:指定加載的映射文件在jar文件中(此方法可能不常用,暫無示例)