Hamani:实体和存储库有什么区别?

Hamani: Entities and Repositories what is the difference?

我继续自己研究 hanami,并且我 运行 了解到在生成用户模型时,hanami 会生成 2 个包含文件的实体和存储库目录

user.rb 实体目录

class User < Hanami::Entity
end

user_repositories.rb 存储库目录

class UserRepository < Hanami::Repository
end

我阅读了文档,但我仍然不明白其中哪些 类 应该描述关联验证,或者为什么原则上需要这些 类 中的每一个,因为在 RoR 中我们需要 1 个模型。请解释(

这里是 Hanami 的 Luca :)

Entities:

An entity is domain object that is defined by its identity.

An entity is at the core of an application, where the part of the domain logic is implemented. It’s a small, cohesive object that expresses coherent and meaningful behaviors.

Repository:

An object that mediates between entities and the persistence layer. It offers a standardized API to query and execute commands on a database.

简而言之:实体是您的业务逻辑和数据持有者,存储库是 read/write 数据 from/to 数据库的一种方式。

如果您熟悉 Rail 的 ActiveRecord,它就像将一个 Rails 模型分成两个职责:一个实现业务逻辑,一个处理数据库。


验证:我们不会将验证与模型混合使用。我们鼓励您在 Interactors or in Actions.

中进行验证

原因在blog post of mine中解释。 [请注意 Hanami 以前称为 Lotus]