<我的智囊团>事务管理 询问

jinchun1234 2010-09-26 02:42:11
我的智囊团采用了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交流,会多给分的哦!!!
...全文
103 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
striveforit 2010-09-26
我是初学的,只说下自己知道的吧
里面使用的是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 回调的方法管理数据库.
回复
youjianbo_han_87 2010-09-26
[Quote=引用 3 楼 jinchun1234 的回复:]

引用 1 楼 youjianbo_han_87 的回复:
上面的配置只是一部分,不全。。。

Spring和Hibernate已经出来N年了,随便 Google...一下,也能得到好几种解决方案。

楼主2 00分,太大方了。。。


麻烦你看清楚我问的什么再回答。ok??
[/Quote]

已经给了你答案了(Google...) 麻烦你看清楚。。。
回复
kala197 2010-09-26
hibernate 只对声明了的异常进行回滚 在掉数据库操作方法时要try
还有就是 在配置文件里面指定使用事务的方法的名称 比如 save* save开头的 方法
额 我忘了怎么弄了 回家看看原来的项目 大概就是上面说的
回复
myhope88 2010-09-26
除这个设置之外,好像还有设置一个自动提交事务的配置吧
回复
jinchun1234 2010-09-26
[Quote=引用 4 楼 andesen 的回复:]
只有这么点配置吗
看看.xml哪里还有对transactionManager的引用

或者方法上面加注解的
[/Quote]
我是说没有这样的配置
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
回复
andesen 2010-09-26
只有这么点配置吗
看看.xml哪里还有对transactionManager的引用

或者方法上面加注解的
回复
jinchun1234 2010-09-26
[Quote=引用 1 楼 youjianbo_han_87 的回复:]
上面的配置只是一部分,不全。。。

Spring和Hibernate已经出来N年了,随便 Google...一下,也能得到好几种解决方案。

楼主2 00分,太大方了。。。
[/Quote]

麻烦你看清楚我问的什么再回答。ok??
回复
soli11722984 2010-09-26
应该是有类似AOP的东西存在
回复
youjianbo_han_87 2010-09-26
上面的配置只是一部分,不全。。。

Spring和Hibernate已经出来N年了,随便 Google...一下,也能得到好几种解决方案。

楼主2 00分,太大方了。。。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-09-26 02:42
社区公告
暂无公告