ワークスペースにはゼロ、1 つ、または複数のドキュメントを含めることができるという考えで、エンティティがありWorkspace
ます。Document
これをモデル化するための私の最初のアプローチは次のとおりです。
case class Workspace(name: String, documents: Seq[Document])
私のワークスペースには多くのドキュメントが含まれている可能性があるため、これはうまくスケーリングしません。幸いなことに、私のビジネス要件により、ワークスペースとドキュメントを別々に扱うことができます (ワークスペースがある場合、そこに含まれるすべてのドキュメントを考慮する必要がある理由や不変条件がないという意味で)。
質問:私は疑問に思っています: どうすればSormWorkspace
で と をモデル化Document
して、2 つの間にリンクを作成できますが、ワークスペースのすべてのドキュメントをロードする必要はありませんか? ページネーションをサポートして、ワークスペースのドキュメントにアクセスできるリポジトリがあると思います。)
case class Workspace(name: String)
case class Document(name: String, /* ... */)
trait WorkspaceRepository {
def children(ws: Workspace, offset: Long, limit: Long)
}