2012-10-29 107 views
1

我发现HibernateTemplate从Hibernate 4中删除,我应该如何配置Dao应用程序上下文xml文件?Spring 3和Hibernate 4 Dao

+1

重复? http://stackoverflow.com/questions/10818291/spring-3-1-hibernate-4-hibernatetemplate – MrKiller21

+0

好吧,我没有找到任何细节,似乎没有足够的帮助。因此我不认为这是重复的。 – user1782784

回答

3

我在我的DAO类中使用了sessionFactory.getCurrentSession()。而Spring配置是这样的:

<bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
     p:driverClassName="${jdbc.driverClassName}" 
     p:url="${jdbc.url}" 
     p:username="${jdbc.username}" 
     p:password="${jdbc.password}"/> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="annotatedClasses"> 
     <list> 
      <value>my.package.entity.Account</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

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

<tx:annotation-driven transaction-manager="transactionManager"/> 

所以,现在你应该使用例如为:

@Autowired 
private SessionFactory sessionFactory; 

public void save(YourEntity entity) { 
    sessionFactory.getCurrentSession().save(entity); 
} 

更改HibernateTemplateSessionFactory

+0

谢谢。以前我有一个DAO bean,它引用了HibernateTemplate,但现在我该怎么处理它?此外,这是春季配置所需的参考吗? – user1782784

+0

编辑答案。这也是您需要的所有弹簧配置。 –

+0

太棒了!它适用于保存。但是当我将它用于showAllEntity()时,它会引发异常。 public List showAllEntity(){ return sessionFactory.getCurrentSession()。createQuery(“from Enity”).list();} – user1782784