如何为Annotated和hbm.xml配置的实体创建一个hibernate会话bean

时间:2015-09-15 19:04:38

标签: java spring hibernate

我有遗留的hbm.xml配置的持久化类和带注释的持久化类,所以目前我们必须指定在DAO bean中使用哪个会话工厂。

不幸的是,这意味着我遇到了一个我想要使用的DAO混合问题,并不是所有与单个会话工厂相关联的问题

我希望将它们组合到一个会话工厂bean中,因为我们不能一次性地将所有内容都移到一起。

我该怎么做呢?

注意:我目前的解决方法是对一些配置的xml进行注释,然后创建两个DAO bean:每个会话工厂一个。

的hbm.xml:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mappingLocations">
        <value>hbm/path/*.hbm.xml</value>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
        </props>
    </property>
</bean>

注释:

<bean id="annotatedSessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="path.batch.persistent"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
        </props>
    </property>
</bean>

1 个答案:

答案 0 :(得分:1)

感谢M.Deinum和orid:

我正在思考这个问题 从来没有需要两个会议工厂。

所以我只需要将上下文文件重构为:

<bean id="annotatedSessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="path.batch.persistent"/>

    <property name="mappingLocations">
        <value>hbm/path/*.hbm.xml</value>
    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
            <prop key="hibernate.show_sql">false</prop>
        </props>
    </property>
</bean>