1.重写LocalSessionFactoryBean的newSessionFactory 在其中加载 hibernate的配置文件
2.注意:如果在application 中value 没有写 classpath 则必须使用绝对路径进行配置
3.代码示例:
<bean id="sessionFactory" class="com.shine.spring.ShineSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- hbm文件已改成通过插件加载
<property name="mappingLocations">
<list>
<value>classpath*:com/shine/**/entity/hbm/*.hbm.xml</value>
</list>
</property>
</bean>
public class ShineSessionFactoryBean extends LocalSessionFactoryBean{
protected SessionFactory newSessionFactory(Configuration config) throws HibernateException {
config.addFile("xx1.hbm.xml"); //这里将要增加的hbm配置文件都加载到config中
config.addFile("xx2.hbm.xml"); (我测试的时候,非web项目只能使用绝对路径,可能web项目可以使用相对路径)
return super.newSessionFactory(config);
}
}
4.使用默认的路径(没有实现)
5.mappingResources:指定classpath下具体映射文件名
petclinic.hbm.xml
mappingLocations:可以指定任何文件路径,并且可以指定前缀:classpath、file等
/WEB-INF/petclinic.hbm.xml
classpath:/com/company/domain/petclinic.hbm.xml
也可以用通配符指定,????*????指定一个文件(路径)名,????**????指定多个文件(路径)名,例如:
classpath:/com/company/domain/**/maps/*.hbm.xml
上面的配置是在com/company/domain包下任何maps路径下的hbm.xml文件都被加载为映射文件
mappingDirectoryLocations:指定映射的文件路径
mappingJarLocations:指定加载的映射文件在jar文件中