实体 vs 存储库(它们的区别)

8
我对Doctrine相当陌生。在使用Symfony2框架创建了各种实体,这些实体具有基本的getter和setter方法。到目前为止,如果我需要额外的功能,我就会在实体中创建一个新的方法来完成它。(例如,如果我想要存储用户的密码,我将创建一个获取用户密码并直接存储哈希密码值的方法)。
我现在听说有所谓的“仓库”,应该将一些“较复杂”的方法放在其中,而不是直接存储在实体中。这是真还是假?同时,如果您可以在实体中保留所有代码,则拥有存储库的实际好处是什么?
1个回答

23

实体是表示数据库中一行的对象,您应将在其中操作仅使用实体内部状态的方法(无论它们有多复杂) - 它们可以基于其属性返回某些数据,修改其属性或两者都执行。

存储库是一个对象,用于从/到存储中获取和保存实体 - 它代表了数据库表。 您应该在其中放置必须与存储交互的方法,例如save($entity)findActiveUsersOrderedByRegistrationDate()等等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接