配置如下:MyEclipse7.1 jdk1.6 tomcat5.5 struts 1.2 spring2.5 hibernate3.2 myaql5.5
我在studentDao写的studentRegister函数如下:public boolean studentRegister(Student student) {
ht = this.getHibernateTemplate();
boolean bl = false;
try
{

beginTransaction();//我自己定义的开始一个seeion的方法
ht.save(student);
commitTransaction();//我自己定义的一个提交事件的方法
bl = true;
}catch(Exception ex)
{
rollbackTransaction();//同上,回滚操作
ex.printStackTrace();
}finally{
closeSession();//同上,关闭session
}
return bl;
}如果我不用我注释了的地方的语句,我的数据就插入不进数据库,而仅仅只在hibernate中。当然没有报错。我重数据库中得到数据是没有问题的。这个是为什么呀?我看郭克华老师的例子里面他也没有用上面注释的语句,但他的数据能够插入进数据库.求高手正解。小弟先谢谢了!

解决方案 »

  1.   

    hibernate的版本问题?之前默认是自动提交的 后来默认不自动提交了?
      

  2.   

    那他的在spring配置文件中 管理了事务!   仔细看看
      

  3.   

    this.getHibernateTemplate();
    这个方法会自动开启事务,关闭事务,使用它可以减少代码,下面的属于多余
     beginTransaction();//我自己定义的开始一个seeion的方法
     commitTransaction();//我自己定义的一个提交事件的方法   
    直接
    try{
    ht.save(student);
    }catch{
    }
    然后在hibernate.cfg.xml中添加
    <property name="hibernate.connection.autocommit">true</property>
    我的博客里有getHibernateTemplate()与sessions的区别
      

  4.   

    第一方法,可以配置hibernate属性:<property name="hibernate.connection.autocommit">true </property> 
    第二:就是配置spring事务管理器
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>