我有遗留的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>
答案 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>