Java 事务无法使用会话工厂
我有一个使用Spring+Hibernate会话工厂编写的现有代码。我使用sessionFactory编写了DAO,它是事务性的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); } } 我
@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是我需要的。我会试试他的,看看是否有效。