Spring动态加载Hibernate映射文件
来源:互联网 发布:仿微信红包网站源码 编辑:程序博客网 时间:2024/05/16 10:33
近来还在整通用的业务系统框架,采用插件的方式加载需要的配置,之前已实现了spring和struts2配置的动态加载,现在剩下Hibernate的映射文件动态加载还没实现,于是搜资料查源码终于实现之。
1、重写SessionFactory类
新建一个类,继承org.springframework.orm.hibernate3.LocalSessionFactoryBean,
重写newSessionFactory(Configuration config),
在该方法中调用config.addFile()方法增加需要动态加载的hbm文件,主要代码:
public class ShineSessionFactoryBean extends LocalSessionFactoryBean{@Overrideprotected 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文件重复,其他属性还是一样。
<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>
然后重启后生效,整合在系统中时得注意几个问题:
1、如果newSessionFactory中是从系统的全局变量中取需加载的hbm文件的话,得在spring容器初始化前就给该全局变量设置好值。
2、动态加载的hbm.xml文件时确保文件路径是存在的,如果要加载的配置文件在jar包中或者不在本机的得针对该配置文件的读取再做封装。
3、如果系统中需有多个SessionFactory时,得让不同的SessionFactory加载不同的hbm配置文件(我通过为SessionFactory增加ID属性来控制)。
- hibernate+spring动态加载hibernate映射文件
- Spring动态加载Hibernate映射文件
- Spring动态加载Hibernate映射文件
- 转载:hibernate+spring动态加载hibernate映射文件
- Spring与Hibernate动态建表及动态加载映射文件(无需SessionFactory Rebuild)
- Spring加载Hibernate映射文件最佳方式
- Spring使用通配符自动加载hibernate映射文件生成sessionFactory
- spring加载hibernate映射文件的几种方式
- Spring加载Hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- spring 使用classpath方式加载hibernate映射文件
- spring加载hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- spring加载hibernate映射文件的几种方式
- 异步的HTTP POST与GET请求例子
- 基于JQuery的实现图片轮播效果(焦点图)
- The Django Book【第4章 Django模板系统】
- Apache Commons Lang包工具类的介绍-更新中~
- 代码大全的笔记
- Spring动态加载Hibernate映射文件
- 分布式对象存储系统在openstack中的应用研究
- cookies
- jar命令的使用以及hadoop的job内存溢出的解决
- UIImageView常用操作
- java中读写
- 介绍一些好用的ArcToolbox工具——数据处理(默认ArcGIS没有)
- org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org解决办法
- 通过CursorAdapter在ListView中的数据呈现