将hbm文件外化为上下文 - 如何?

时间:2012-01-24 16:20:07

标签: hibernate spring

我正在尝试将hbm文件外化为“Context”。这些hbm文件位于tomcat主文件夹下的名为“test”的目录中。 我尝试将“test”添加到classpath以及/conf/catalina.properties的shared.loader或common.loader属性。它不起作用。

有人可以帮我找到正在寻找的解决方案吗?

以下是app-context.xml

中的代码段
<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="annotatedClasses">
        <list>
        <value>com.test.model.Person</value>
        </list>
    </property>
    <property name="mappingResources">
        <list>
            <value>classpath:Person.hbm.xml</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${jdbc.dialect}</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

编辑: 问题是,WebAppClassLoader只在WEB-INF / classess中查找。有没有办法指示类加载器也查看外部目录?

1 个答案:

答案 0 :(得分:0)

由于您已经在使用属性占位符(${jdbc.dialect}),因此您可能在配置中的某处有<context:property-placeholder...>。一种方法是在你加载的任何属性文件中指定hbm.xml的完整路径。

hibernate.config=/path/to/your/Person.hbm.xml

在你的春季配置

...
<property name="mappingResources">
            <list>
                <value>${hibernate.config}</value>
            </list>
</property>

...

编辑:路径可能必须正确地进行URL格式化,即;

file:///d:/some/dir/Person.hbm.xml