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

Joh*_*ord 4 entity repository doctrine-orm

我对Doctrine很新.使用Symfony2框架我创建了各种具有基本getter和setter方法的实体.到目前为止,如果我想要一些额外的功能,我会在实体中创建一个新方法来做到这一点.(例如,如果我想存储用户的密码,我会创建一个方法来获取用户的密码并直接存储密码的哈希值).

我现在听说有"存储库"之类的东西应该包含"更复杂"的方法而不是将它们存储在实体本身中.如果您可以简单地将所有代码保存在实际实体中的一个位置,那么这是真/假也是拥有存储库的实际好处是什么?

Mat*_*bík 10

实体是一个表示(通常)数据库中一行的对象,你应该放置那些只与实体的内部状态一起运行的方法(无论它们有多复杂) - 它们要么根据其属性返回一些数据,修改它的属性,要么都.

存储库是一个对象,用于从存储中获取和保存实体 - 它表示数据库表.你应该把有方法即必须与存储,像互动save($entity),findActiveUsersOrderedByRegistrationDate()等等.