熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Spring動態加載Hibernate映射文件

2013-11-23 20:07:13  來源: Java開源技術 
    近來還在整通用的業務系統框架采用插件的方式加載需要的配置之前已實現了spring和struts配置的動態加載現在剩下Hibernate的映射文件動態加載還沒實現於是搜資料查源碼終於實現之
重寫SessionFactory類
    新建一個類繼承orgspringframeworkormhibernateLocalSessionFactoryBean
    重寫newSessionFactory(Configuration config)
    在該方法中調用configaddFile()方法增加需要動態加載的hbm文件主要代碼
    [java]
    public class ShineSessionFactoryBean extends LocalSessionFactoryBean{
    @Override
    protected SessionFactory newSessionFactory(Configuration config) throws HibernateException {
    configaddFile(xxhbmxml  //這裡將要增加的hbm配置文件都加載到config中
    configaddFile(xxhbmxml
    return supernewSessionFactory(config)
    }
    }
修改Spring配置文件
    將原來的orgspringframeworkormhibernateLocalSessionFactoryBean改成重寫後的類將之前在這裡配置的hbm路徑去掉或者保留但不要和插件注入的hbm文件重復其他屬性還是一樣
    [html]
    <bean id=sessionFactory class=comshinespringShineSessionFactoryBean>
    <property name=dataSource ref=dataSource />
    <! hbm文件已改成通過插件加載
    <property name=mappingLocations>
    <list>
    <value>classpath*:com/shine/**/entity/hbm/*hbmxml</value>
    </list>
    </property>
    >
    </bean>
然後重啟後生效整合在系統中時得注意幾個問題
    如果newSessionFactory中是從系統的全局變量中取需加載的hbm文件的話得在spring容器初始化前就給該全局變量設置好值
    動態加載的hbmxml文件時確保文件路徑是存在的如果要加載的配置文件在jar包中或者不在本機的得針對該配置文件的讀取再做封裝
    如果系統中需有多個SessionFactory時得讓不同的SessionFactory加載不同的hbm配置文件(我通過為SessionFactory增加ID屬性來控制)


From:http://tw.wingwit.com/Article/program/Java/ky/201311/27969.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.