Doctrine orm 实体与存储库(有什么区别)

Doctrine orm 实体与存储库(有什么区别),doctrine-orm,repository,entity,Doctrine Orm,Repository,Entity,我不太懂教义。使用Symfony2框架,我创建了各种具有基本getter和setter方法的实体。到目前为止,如果我想要一些额外的功能,我只需要在实体中创建一个新方法就可以了。(例如,如果我想存储用户密码,我会创建一个方法来获取用户密码并直接存储密码的哈希值) 我现在听说有些东西,比如“存储库”,应该包含“更复杂”的方法,而不是将它们存储在实体本身中。如果您可以简单地将所有代码保存在实际实体中的一个位置,那么拥有一个存储库的实际好处是什么呢?实体是一个表示(通常)数据库中一行的对象,您应该将这些

我不太懂教义。使用Symfony2框架,我创建了各种具有基本getter和setter方法的实体。到目前为止,如果我想要一些额外的功能,我只需要在实体中创建一个新方法就可以了。(例如,如果我想存储用户密码,我会创建一个方法来获取用户密码并直接存储密码的哈希值)


我现在听说有些东西,比如“存储库”,应该包含“更复杂”的方法,而不是将它们存储在实体本身中。如果您可以简单地将所有代码保存在实际实体中的一个位置,那么拥有一个存储库的实际好处是什么呢?

实体是一个表示(通常)数据库中一行的对象,您应该将这些方法放在那里(无论它们多么复杂)只对实体的内部状态进行操作——它们或者根据其属性返回一些数据,或者修改其属性,或者两者兼而有之

Repository是一个用于从存储中获取和保存实体的对象,它表示db表。您应该放置一些必须与存储交互的方法,如
save($entity)
findactiveUserOrderedByRegistrationDate()
,等等