论坛首页 Java企业应用论坛

还是Spring的事务

浏览 12963 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2004-12-28  
Spring+hibernate

我的一个业务逻辑是包括了多条数据库操作的,我想把这些操作放在同一个事务中

Session sess=getSession();
sess.beginTran();

api1();
api2();
api3();

tran.commit();
sess.close();

这样的需求用Spring怎么配置呢?
Spring中的事务是不是都是对应到一个bean中的一个方法?可以是多个方法共用
同一个事务吗?
   发表时间:2004-12-30  
很简单的一个道理:
Session sess=getSession();; 
sess.beginTran();; 

api1();; 
api2();; 
api3();; 

tran.commit();; 
sess.close();;

是在一个方法中吧,Spring里也是一样啊
public void saveOrUpdate(); {
api1();; 
api2();; 
api3();; 
}

saveOrUpdate()方法在Spring中通过AOP由事务管理起来,那么这个saveOrUpdate()方法中的api(1),api(2),api(3)也在一个事务中了啊。
0 请登录后投票
   发表时间:2004-12-30  
看来只能这样了

就是再封装一层
0 请登录后投票
   发表时间:2004-12-30  
所以我将事务加到Action层。
0 请登录后投票
   发表时间:2004-12-30  
不是再封装一层这样的意思,而是你的业务层本身就应该提供这种业务方法。你不要从数据库设计往上走,而是先从业务逻辑建模开始往下走,那么你先写出来的是业务Bean,然后在业务Bean里面写调用DAO的代码。

如果你认为有必要在Action里面控制业务逻辑,那么你要考虑你的设计是否有问题。Action不是用来编写业务逻辑的,而是单纯用来控制Web流程的。这是一个很基本的原则!
0 请登录后投票
   发表时间:2004-12-31  
像上面的业务方法,还可以理解。但是,要在业务方法中,管理事务,好吗?

如果,把它直接扔到dao接口中的话,那样,肯定会有业务的代码加入,也不好。

看来,加一层service,有用。

对了,难道dao中,只有crud操作吗?如果是那样,完全可以先业务。

我天,再说什么呀,突然感觉,service层有用,在这处理事务,比较合适。那只封装数据库操作的业务好了,呵呵,感觉还是分不开。
0 请登录后投票
   发表时间:2004-12-31  
hongsoft 写道
看来只能这样了

就是再封装一层


封装一层不是很好吗? 保持dao操作的原子性,在sevice中任意组装dao中的方法,加载事务, 岂不是很方便?
0 请登录后投票
   发表时间:2005-01-30  
如果我们就是不封装,直接写三个独立的方法的话,应该怎么配置啊
0 请登录后投票
   发表时间:2005-01-31  
其实如果不用aop
那我们的办法就是在dao的每个方法中传入connection
然后在action中自己管理连接和事务

这样的办法很罗羧,我是想请教大家有什么好的办法没有?
0 请登录后投票
   发表时间:2005-01-31  
因为本帖的问题是很普遍的,基本上所有的应用系统
都会有这个问题,所以,我的一个想法是:

spring的事务管理真的很好吗?
我不知道哪里有个spring的事务管理用于整个子系统的例子?为什么这么多人都对它的事务管理有疑问呢?

我目前就是因为它的事务管理方面的疑问才没有考虑
用spring
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics