我的智囊团采用了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交流,会多给分的哦!!!
<!-- 配置事务管理器 -->
<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交流,会多给分的哦!!!
看看.xml哪里还有对transactionManager的引用或者方法上面加注解的
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
还有就是 在配置文件里面指定使用事务的方法的名称 比如 save* save开头的 方法
额 我忘了怎么弄了 回家看看原来的项目 大概就是上面说的
已经给了你答案了(Google...) 麻烦你看清楚
里面使用的是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 回调的方法管理数据库.