В чем разница между классом сущностей и классом модели в доктрине SYmfony2


Я исследую FOSUserBundle. Я хочу знать, в чем разница между Model--User.php и Entity--User.php .

Не могут ли Модель и Сущность быть одинаковыми.

Author: user825904, 2012-07-12

1 answers

Вот лучшее резюме о ролях и терминологии Доктрины 2.

Сущность используется шаблоном UnitOfWork в ORM доктрины 2.0 (и в режиме гибернации в мире Java), а также является объектным представлением вещи в реальном мире. Он имеет те же атрибуты и методы, что и запись, но он не знает о ее сохраняемости. Это в основном POPO (обычный старый PHP-объект). Это позволяет этим классам и объектам быть очень легкий.

Модель - это концептуальное объектное представление вещи. Этот термин можно было бы использовать для всего вышеперечисленного. Запись - это модель точно так же, как сущность или документ. Этот термин описывает объектное представление вещи.

Поэтому, если вы хотите создать пакет с некоторыми моделями в нем, и вы хотите, чтобы ваш пакет был независимым от любого уровня сохраняемости, вы бы создали классы моделей и интерфейсы, которые определяют эту вещь.

Вы бы определили и/или реализуйте там все, что не относится к какой-либо реализации сохраняемости, и вы бы использовали связанную сущность или класс документов через делегирование для обработки конкретных материалов.

Это делается, например, в FOSUserBundle, который определяет пользовательскую модель. Эта модель пользователя используется во всем пакете, но не имеет полной реализации для доступа к собственным данным (я не смотрел, но думаю, что это может быть только интерфейс). Окончательная реализация выполняется в класс сущностей и другой в классе документов, поэтому независимо от того, используете ли вы MySQL или MongoDB, вы все равно можете работать с одной и той же моделью пользователя. Вы даже можете переключаться с одного на другой, не меняя свой код, так как он всегда использует модель, независимую от сущности или документа.

 33
Author: Travis, 2017-06-12 15:59:53