【发布时间】:2019-08-19 08:21:38
【问题描述】:
在我的应用程序中,我有一个定义路由的 api 层、用于执行业务逻辑的服务层和一个查询数据库的存储库层。服务将调用存储库层以检索数据,执行各种业务逻辑,然后将响应返回给 api 层。
现在,我有一些需要在数据库事务中完成的业务逻辑。例如,假设我的应用允许您购买给定活动的门票:
服务层调用存储库以通过递减可用票证的数量在数据库中自动保留票证。
然后服务层发出一个api请求来处理票的支付。
如果支付成功,服务层调用存储库为用户和给定事件创建一个“订单”。
但是,如果付款失败,我想回滚对门票可用性所做的更改。 (或者如果由于某种原因为用户创建订单失败,同样的事情)。
问题在于,如果服务层知道数据库事务,这似乎是一个泄漏的抽象。有没有更好的范例?
【问题讨论】:
标签: database design-patterns transactions