我们目前面临的情况是模型实体和数据库逻辑紧密交织在一起,这使得单元测试变得不可能。所以,我决定设计一个存储库模式。我们通过 Com 交互 Root-Children[每个孩子都是另一个 Root] 看到的存储模型的基本结构。这是一个树形结构。了解了这一点,我们设计的存储库是用于根上的 CRUD 操作的 RootRepository,而 RootRepository 内部的 ChildRepository 用于子级的 CRUD 操作。我们决定 Create 仅用于创建实体但不持久化它,但更新将仅在数据库中未找到任何实体键时插入或在找到时更新。Read 将按键获取实体。因此,在与存储库 API 交互时,我们决定首先使用密钥获取实体,如果它为空,则调用创建基本实体(存储库使用工厂),如果需要,可以对其进行更新,并使用更新将其持久化回数据库。因为它是一个指向另一个实体的 Value 对象,所以它本身不能被持久化。要持久化子对象,我们必须先持久化子引用实体,然后再请求根存储库以创建子对象,并且可以将其添加到父子集合中,并调用父持久性,这样子对象将与父对象一起持久化。
所以,我想知道我们所遵循的方法和设计模式真的符合标准。据我们所知,这是我们获得单元测试支持和使用最少数据模拟进行测试的唯一方法。我在网上四处寻找构建存储库的想法,但没有任何帮助。我在这里的大部分问题都将在我们的单元测试中得到解决,但我想知道是否已经存在任何设计模式。在这个早期阶段,很容易迁移到任何标准框架(如果存在),我希望我能从你们那里得到任何指导。