1、重写SessionFactory类
新建一个类,继承org.springframework.orm.hibernate3.LocalSessionFactoryBean,
重写newSessionFactory(Configuration config),
在该方法中调用config.addFile()方法增加需要动态加载的hbm文件,主要代码:
[java]
public class ShineSessionFactoryBean extends LocalSessionFactoryBean{
@Override
protected SessionFactory newSessionFactory(Configuration config) throws HibernateException {
config.addFile("xx1.hbm.xml"); //这里将要增加的hbm配置文件都加载到config中
config.addFile("xx2.hbm.xml");
return super.newSessionFactory(config);
}
}
2、修改Spring配置文件
将原来的org.springframework.orm.hibernate3.LocalSessionFactoryBean改成重写后的类,将之前在这里配置的hbm路径去掉,或者保留但不要和插件注入的hbm文件重复,其他属性还是一样。
[
html]
然后重启后生效,整合在
系统中时得注意几个问题:
1、如果newSessionFactory中是从系统的全局变量中取需加载的hbm文件的话,得在spring容器初始化前就给该全局变量设置好值。
2、动态加载的hbm.xml文件时确保文件路径是存在的,如果要加载的配置文件在jar包中或者不在本机的得针对该配置文件的读取再做封装。
3、如果系统中需有多个SessionFactory时,得让不同的SessionFactory加载不同的hbm配置文件(我通过为SessionFactory增加ID属性来控制)。