小编use*_*151的帖子

go中的存储库模式和连接表

我目前正在尝试围绕领域驱动设计、实体、服务、存储库构建我的应用程序...

所有基本的增删改查操作都很简单,基本上 1 个实体 => 1 个表 => 1 个存储库 => 1 个服务

但我无法找出处理两个实体之间的联接表的最干净的方法。

可以在联接内部按表进行 1 次查询,并且它会是“干净的”(可以这么说),但效率不高,因为简单的联接会导致一次查询。

在这种模式下,表格在哪里连接?

  • 我一直在考虑现在构建能够封装答案的实体,但这将有效地为 1 个查询创建 1 个实体 + 存储库...

  • 我还认为将多个实体合并到一个接口中可能会部分解决这个问题,但这会导致我的实体出现许多空参数(当您执行联接时,很少需要所有选项卡中的所有字段)

解决这个问题的正确方法/模式是什么,适合 DDD 或至少是干净的?

-- 编辑示例:

type User struct {
    ID          int       `db:"id"`
    ProjectID      int    `db:"project_id"`
    RoleID      int       `db:"role_id"`
    Email       string    `db:"email"`
    FirstName   string    `db:"first_name"`
    LastName    string    `db:"last_name"`
    Password    string    `db:"password"`
}

type UserRepository interface {
    FindById(int) (*User, error)
    FindByEmail(string) (*User, error)
    Create(user *User) error
    Update(user *User) error
    Delete(int) errorr
}

type Project struct { …
Run Code Online (Sandbox Code Playgroud)

design-patterns domain-driven-design ddd-repositories go

4
推荐指数
1
解决办法
4195
查看次数