关于三层架构及事务的异常处理

关于三层架构及事务的异常处理

我的个人理解,在三层架构的开发模式中。

dao层

负责对数据库进行增删查改基本操作。比如新建一个用户信息,更新一个用户信息。

每个dao层的方法都必须是单元操作,即不允许多次读写数据库,因此无需在dao层加事务处理。

在dao层无需手动去处理异常,异常由系统自动抛出,在service层捕获。

service层

负责组合dao层方法来处理业务逻辑。比如处理用户A转账给用户B,就需要两次调用dao层方法,一次是减少用户A的账户、一个是增加用户B的账户,这种业务逻辑就必须放在service层。

service层负责捕获dao层的异常,并判断是否向上抛出异常,是否回滚事务,或者还是在service层就处理掉异常,给上层返回处理结果。

通常,对于简单的业务逻辑,可以在service捕获并处理异常,然后给上层action层返回处理结果(成功or失败)即可。如果涉及到的业务复杂,并且涉及到多次的dao层写入操作,就必须回滚事务。注意,使用spring的aop事务的话,要么是在service层抛出异常触发aop事务回滚,要么就得手动回滚事务。如果异常在service层被捕获并处理掉,是不会触发事务回滚的。

action层

复杂调用service层方法,并捕获service层的异常,给用户输出可读的信息。

无需事务处理。

发表评论

电子邮件地址不会被公开。 必填项已用*标注