最近复习了一把SSH,碰到一个问题,在将hibernate交给spring管理并配置好事务后,进行了一个小测试,结果发现getHibernateTemplate().saveOrUpdate()和getHibernateTemplate().save()不起作用,执行后hibernate打印了sql语句,并且获得了页面传到Action 的数据,可是到数据库检查就是没有新添加的数据,修改的数据也没有提交到数据库!资讯百度谷歌后终于找到原因:
hibernate交由spring管理并配置事务有,spring没有将hibernate session中的sql提交到数据库执行,因为在hibernate中,事务提交默认是设置成false的,所以往往我们进行存hibernate操作的时候,最后总要commit()一把!可现在spring进行管理以后同样是没有自动提交的,所有需要我们手动在配置文件中设置事务自动提交:<prop key="hibernate.connection.autocommit">true</prop> 并且将该段写到<bean id="SessionFactoryId"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"></bean>这个bean中 设置事务的自动提交!而后问题解决!
希望让大家少走弯路...有时候一个很小的问题消耗的时间确实非常巨大的...