Java 事务无法使用会话工厂

Java 事务无法使用会话工厂,java,spring,hibernate,Java,Spring,Hibernate,我有一个使用Spring+Hibernate会话工厂编写的现有代码。我使用sessionFactory编写了DAO,它是事务性的 @Transactional public class WorkingDAO<T> { private SessionFactory sessionFactory; public void save(T t){ sessionFactory.getCurrentSession().save(t); } } 我

我有一个使用Spring+Hibernate会话工厂编写的现有代码。我使用sessionFactory编写了DAO,它是事务性的

@Transactional
public class WorkingDAO<T> {

    private SessionFactory sessionFactory;

    public void save(T t){
        sessionFactory.getCurrentSession().save(t);
    }

}
我有一些单元测试,这些测试对于这个DAO来说工作得很好。现在我想使用SpringJPA来减少编写DAO类的工作量。因此,我使用了以下配置

<bean id="entityManagerFactory"      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter" />
      <property name="jpaDialect" ref="jpaDialect"/>
      <property name="jpaProperties">
....
</bean>

<bean id="SessionFactory" factory-bean="entityManagerFactory"
      factory-method="getSessionFactory" />

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
     </bean>

<tx:annotation-driven/>

但是,在使用上述配置之后,我的旧单元测试失败了。我可以使用现有的SessionFactory吗?还是我必须迁移到entityManager

使用正确的事务管理器您需要使用JpaTransactionManager。另外,我建议不要使用工厂方法,而是使用HibernateJPAsionFactoryBean。它是如何失败的?是否可以发布堆栈跟踪?在Spring上下文中如何配置DAO?我在Spring配置中没有看到任何组件扫描。抱歉,我忽略了一些与组件扫描相关的配置@Deinum我想HibernateJPasionFactoryBean是我需要的。我会试试他的,看看是否有效。