回送4什么是存储库?

mma*_*oub 3 loopback v4l2loopback

我很难理解Loopback 4中存储库的概念,该文档说:

存储库表示专门的服务接口,该接口针对基础数据库或服务提供域模型的强类型数据访问(例如CRUD)操作。

但是这种描述并不能帮助我完全理解其背后的思想,有人可以简单地解释它的确切含义,并提供其他框架中类似概念的一些示例吗?

Mir*_*toš 5

当使用ORM(对象关系映射器)框架时,我们将数据表示为模型类

@model()
class Person {
  @property()
  name: string;
}
Run Code Online (Sandbox Code Playgroud)

为了持久化和查询数据,我们需要向模型添加行为。存储库是提供此类行为的类。

例如,LoopBack的EntityCrudRepository界面描述了用于创建,更新,删除和查询SQL表/ NoSQL文档集合中的数据的方法。

// simplified version
interface EntityCrudRepository<T, ID> {
  create(data: DataObject<T>): Promise<T>;
  find(filter?: Filter<T>): Promise<T[]>;
  updateById(id: ID, data: DataObject<T>): Promise<void>;
  deleteById(id: ID): Promise<void>;
  // etc.
}
Run Code Online (Sandbox Code Playgroud)

KeyValueRepository描述与键-值存储像Redis的工作API:

interface KeyValueRepository<T> {
  get(key: string): Promise<T>;
  set(key: string, value: DataObject<T>): Promise<void>;
  delete(key: string): Promise<void>;
}
Run Code Online (Sandbox Code Playgroud)

另请参阅企业应用程序架构的模式

从概念上讲,存储库封装了持久存储在数据存储中的对象集以及对其执行的操作,从而提供了持久层的更加面向对象的视图。存储库还支持在域和数据映射层之间实现清晰的隔离和单向依赖的目标。