日期:2014-05-19  浏览次数:20662 次

SSH整合中通过spring3.1.1获取SessionFactory和Session的问题,求解答
最近在做SSH的时候,发现hibernate4已经取消了HibernateTemplate,那么通过spring3.1获取Session的时候是需要获取到SessionFactory,然后再通过getcurrentsession()来获取session吗?获取的session还需要开启事务和关闭吗,感觉好麻烦如果这样做
   

  还是说可以直接使用sessionFactory.getCurrentSession().save(user),而不必再new一个session出来,spring会自动帮助关闭session吗?



------解决方案--------------------
需要配置并启动事务,在spring配置文件中加入事务配置,可能是这样:
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
在类上加入这个注解:
@Transactional
public class UserDAOImpl implements UserDAO{
.....
这样就可以直接更新数据了:
sessionFactory.getCurrentSession().save(user);
spring将负责对session和事务的管理,用户不需要管理session和事务。
------解决方案--------------------
探讨

需要配置并启动事务,在spring配置文件中加入事务配置,可能是这样:
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
在类上……

------解决方案--------------------
hibernate你最好自己关闭session
和spring是没关系的