Service 或是 Repository 使用 DB Connection 方式?

作者站长头像
站长
· 阅读数 11

方式2,每个方法增加 Connection 参数,优点是能管控 Transation,在多个业务逻辑能出问题一次rollback。如下订单需要经过 Order 跟 OA 审批的 Service,能共用 connection。

方式1,个人没用,但外层方法function可以不需要管理 Connection

请问哪一种比较符合大业务量的需求

//方法一 : 每个 Service 方法自己建立 Connection
public class OAService
{
    public bool SendApplication()
    {
        using(var cnn = DB.GetConnection())
        {
            //..
        }
    }
}

public class OrderService
{
    public bool CreateNewOrder()
    {
        using(var cnn = DB.GetConnection())
        {
            //..
        }
    }
}

//方法一 : 每个 Service 方法使用外部传进来的Connection
public class OAService
{
    public bool SendApplication(DbConnection cnn)
    {
        //..
    }
}

public class OrderService
{
    public bool CreateNewOrder(DbConnection cnn)
    {
        //..
    }
}
回复
1个回答
avatar
test
2024-07-13

既然选择分层,那就应该遵守分层规则,Service 重点在于组合 Repository 来处理业务,而 ConnectionTransation 本身就是 Repository 层面的事,惯穿到 Service 那分层就没什么意义了;

试想一下,如果你的 Repository 并不是使用 DB,你所困惑的ConnectionTransation 还有意义吗?

所以问题本身应该是,你为什么要选择分层?

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容