我们的项目使用Slick并分成模块,其中每个模块都有一个服务层(业务逻辑,可能依赖于不同模块中的其他服务),这些模块可能封装了几个返回DBIO
个动作的DAO层。 / p>
我们在服务层上编写来自不同DBIO
的{{1}}个动作,以在事务中运行业务逻辑。
问题很简单,当服务DAO
依赖于服务A
并且需要从服务B
调用某个函数时,我们是否应将该调用置于B
内B
或首先对DBIO.from
进行服务调用,然后根据结果执行数据库事务。
在B
内调用服务B
的好处是,如果调用失败了我们的事务回滚,但当然如果成功然后失败了我们基本上都在同一个没有从DBIO.from
拨打电话的情况。
缺点是,只要我意识到数据库事务应该简短快速,并且在数据库事务中调用外部服务听起来像个坏主意("代码味道")
您的意见是什么?