我的智囊团采用了ssh架构,看了下spring 的配置文件,也没有配置
<!-- 配置事务管理器 -->
 <bean id="transactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory">
   <ref bean="sessionFactory" />
  </property>
 </bean>services中只是集成了HibernateDaoSupport 
public class IAdminDAOImpl extends HibernateDaoSupport public void delete(String adminid) throws Exception {
String hql = "DELETE FROM Admin WHERE adminid=?";
Query q = super.getSession().createQuery(hql);
q.setString(0, adminid);
q.executeUpdate();
}
}
请问使用spring的事务了吗?HibernateDaoSupport 自己对事务有封装?
不是太明白到底事务怎么控制的。请告诉解释下!!谢谢!!或者QQ交流,会多给分的哦!!!

解决方案 »

  1.   

    上面的配置只是一部分,不全Spring和Hibernate已经出来N年了,随便 Google...一下,也能得到好几种解决方案。楼主2 00分,太大方了
      

  2.   

    只有这么点配置吗
    看看.xml哪里还有对transactionManager的引用或者方法上面加注解的
      

  3.   

    我是说没有这样的配置
    <!-- 配置事务管理器 -->
     <bean id="transactionManager"
      class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory">
      <ref bean="sessionFactory" />
      </property>
     </bean>
      

  4.   

    hibernate  只对声明了的异常进行回滚 在掉数据库操作方法时要try
    还有就是 在配置文件里面指定使用事务的方法的名称 比如 save*  save开头的 方法
    额 我忘了怎么弄了 回家看看原来的项目 大概就是上面说的
      

  5.   


    已经给了你答案了(Google...) 麻烦你看清楚
      

  6.   

    我是初学的,只说下自己知道的吧
    里面使用的是getSession(),在这个层面上是没用Spring的,建议使用getHibernateTemplate()理由如下:(参见http://topic.csdn.net/u/20091208/16/ade8da0a-7a4d-423b-9d25-bd95c171b450.html)
    1.使用getSession()方法你只要继承sessionFactory,而使用getHibernateTemplate()方法必须继承HibernateDaoSupport当然包括sessionFactory,这点区别都不是特别重要的,下面这些区别就很重要了2.getSession()方法是没有经过spring包装的,spring会把最原始的session给你,在使用完之后必须自己调用相应的close方法,而且也不会对声明式事务进行相应的管理,一旦没有及时关闭连接,就会导致数据库连接池的连接数溢出,getHibernateTemplate()方法是经过spring封装的,例如添加相应的声明式事务管理,由spring管理相应的连接。在实际的使用过程中发现的确getHibernateTemplate()比getSession()方法要好很多,但是有些方法在getHibernateTemplate()并没有提供,这时我们用HibernateCallback 回调的方法管理数据库.