可以为两个Hibernate模板使用相同的Session Factory

时间:2014-03-03 07:24:00

标签: java spring hibernate

是否有一些机制可以为两个hibernate模板使用一个会话工厂。

我试过它会抛出bean创建异常。

<bean id="auditLogHibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="auditLogSessionFactory"/>
</bean>

 <bean id="auditLogLocalHibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="auditLogSessionFactory"/>
</bean>

我可以这样做吗? 如果不能让我知道任何其他方式来做到这一点。 或者我们不能这样做吗?

堆栈跟踪

引起:org.springframework.beans.factory.BeanCreationException:在类路径资源[auditlog / conf / auditlog-conf.xml]中定义名称为'auditLogLocalHibernateTemplate'的bean创建错误:无法解析对bean'localHibernateSession'的引用设置bean属性'sessionFactory';嵌套异常是org.springframework.beans.factory.BeanCurrentlyInCreationException:创建名为'appHibernateSessionFactory'的bean时出错:当前处于创建状态的FactoryBean从getObject返回null

完整配置如下。

<alias name="appHibernateSessionFactory" alias="localHibernateSession" />

<bean id="auditLogSessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="auditLogDataSource"/>
        <property name="annotatedClasses">
            <list>
                <value>auditlog.domain.AuditLog</value>
            </list>
        </property>
        <property name="hibernateProperties" ref="auditLogHibernateProperties" />
    </bean>

    <bean id="auditLogHibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="auditLogSessionFactory"/>
    </bean>
    <bean id="auditLogLocalHibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory" ref="localHibernateSession"/>
    </bean>

    <bean id="auditLogDao" class="auditlog.dao.AuditLogDao" >
        <property name="hibernateTemplate" ref="auditLogHibernateTemplate" />
    </bean>

    <bean id="auditLogLocalDao" class="auditlog.dao.AuditLogLocalDao" >
        <property name="hibernateTemplate" ref="auditLogLocalHibernateTemplate" />
    </bean>


    <bean id="auditLogManager" class="auditlog.service.AuditLogManager" >
        <property name="auditLogDao" ref="auditLogDao" />
        <property name="auditLogLocalDao" ref="auditLogLocalDao" />
    </bean>

0 个答案:

没有答案