日期:2014-05-18  浏览次数:20650 次

SSH中关于事务以及ACTION设计。
在SSH开发中,假设场景为登录。

登录需要做的事情如下:
1、获得Auth授权对象

2、查看数据库的sys_auth表是否有该auth对象对应的数据,没有就INSERT一个。

3、判断上下文中是否有授权对象,没有则存一个。

4、调用远程服务,根据用户AUTH对象获得该用户订购的服务列表,并判断出用户订购产品的级别。

5、把用户订购级别和用户名存入SESSION。


现在有两种设计,我不知道哪种是对的。
设计一:
以上5个步骤都写在一个Service的一个login方法中,如果步骤2异常,则3、4、5都不执行了,感觉好处是这些步骤都是一个业务的整体,当成了一个事务在执行。
但这样就导致service层的login方法参数列表是login(ServletContext application,HttpSession session),感觉把service层给耦合了J2EE的API。


try {
步骤1
步骤2
步骤3
步骤4
步骤5
} catch (Exception e) {
    e.printStackTrace();
}




设计二:
以上1、2、4写成一个Service类中的3个不同的方法,都在UserAction当中分别调用它们,而3、5就直接在ACTION里面编程。

这样感觉上这些都很零散,不像一个整体。



请问大家平常的设计当中,ACTION的一个方法里面,是调用多个SERVICE方法呢,还是只调用一个?
上面哪种更合适????

------解决方案--------------------
首先要看你那些小功能是否会重复使用,如果有的话 最好分开成一个一个的小方法,如果不重复使用的话就按你第一种写法,使用SSH开发尽量不要吧业务逻辑写在action中