Я знаю, что данные ядра не следует рассматривать как ORM, но он по-прежнему предлагает функциональность, похожую на ORM. Просто любопытно, реализует ли он карту данных? Я знаю, что «Data Mapper - это слой программного обеспечения, который отделяет объекты в памяти от базы данных. Его обязанностью является передача данных между ними, а также их изолирование друг от друга». (Мартин Фаулер). Диспетчер контекста IMHO обрабатывает весь SQL-материал в одну транзакцию, поэтому очень эффективный дизайн и основные данные IMHO можно рассматривать как реализацию шаблона карт данных.Являются ли основные данные реализацией шаблона карт данных?
ответ
Год последней, я буду способствовать мои два цента
Я не эксперт ОРМ и только недавно начал что-то с помощью Mapper данных, но как долго пользователь основных данных я не могу сказать, что нет. Основная цель этого шаблона - четкое сокращение объекта домена из всех операций, связанных с базой данных.
Как только я начинаю писать модульные тесты, первое, что я замечаю, это то, что я должен загрузить базу данных, даже если это только часть памяти, но я должен ее загрузить. Кроме того, для каждого класса нет указателей, я не могу контролировать, как хранятся каждое отношение.
Основные данные загружают много метаинформации о вашем графике объектов и создают для них некоторую структуру. Хотя вы можете изменить постоянный магазин и испечь что-то свое, у вас будет много ограничений на то, как это сделать, с явным «реляционным» чувством к нему.
Идея хорошая, мы можем сказать, что это ее вариация. Мне нравится то, что операция сохранения выполняется контекстом, а не самим объектом. Таким образом, существует некоторый тип разделения.
Однако посмотрите на такие функции, как «awakeFromFetch» или «didSave», обе операции связаны с хранилищем данных, а не с обычным доменным объектом. Правильный шаблон Data Mapper позволит вам определять эти операции для каждого постоянного хранилища, а не унифицировать его в одном объекте.
UPDATE:
достаточно смешной один день после моего ответа, я должен был иметь дело со старым проектом на основе CoreData и должен вернуться, чтобы улучшить этот ответ. Чтобы все было ясно, я считаю, что «похоже на образец» недостаточно. Например, реализация шаблонов фасадов и адаптеров очень похожа, но вы называете их по-разному в зависимости от того, как вы их используете.
Является ли Core Data реализатором данных?
Должен сказать, что мой «не совсем» должен был быть «определенно нет»!
Я просто очень рассердился, потому что мне нужно было переименовать некоторые поля, а затем добавить новые. Хотя я хорошо знаю, как работают автоматические миграции с Core Data, я забыл, насколько это раздражает.
Сколько раз вам нужно какое-то новое поле, переименовать что-нибудь, экспериментировать, пока не получите его правильно .... и для каждого маленького изменения требуется полная перемена базы данных? С помощью Data Mappers это никогда не происходит, потому что объекты домена отлично развязаны. Вы только касаетесь базы данных, чтобы догнать объекты домена после завершения какой-либо новой функции. Core Data заставляет вас каждый раз связывать каждую деталь ваших объектов домена.
Мальчик, как была сладкая жизнь, пока я не забыл, что «крошечное» раздражение Core Data является полной противоположностью тому, что вы можете достичь с помощью карт данных.
- 1. Являются ли основные данные использующими шаблон Ghost?
- 2. Являются ли основные данные своего рода графической базой данных?
- 3. Являются ли основные данные полезными для данных только для чтения?
- 4. Карт Google Maps - Основные данные
- 5. Являются ли крючки Drupal реализацией интерфейсов?
- 6. Основные данные для временных данных
- 7. Помощь с фабричной реализацией шаблона
- 8. Является ли это действительной реализацией шаблона MVP
- 9. Является ли jQuery реализацией шаблона проектирования Decorator?
- 10. Основные данные сбой данных
- 11. Основные данные чтения данных
- 12. Являются ли основные характеристики данных лучше с меньшими атрибутами?
- 13. Являются ли основные изменения данных отраженными в локальных подклассах NSManagedObject?
- 14. Основные данные
- 15. Основные данные/база данных IOS
- 16. Проблемы с реализацией шаблона hashTable
- 17. Каковы основные стратегии шаблона шаблона
- 18. Проблемы с реализацией шаблона «Наблюдатель»
- 19. Основные данные - как проверить, существует ли пользователь в базе данных?
- 20. Проблемы с реализацией шаблона ViewHolder
- 21. jquery/изотоп | основные проблемы с реализацией
- 22. Основные данные - Основные вопросы
- 23. Являются ли .NET автоматические данные хорошей идеей?
- 24. Являются ли перечисления в виде битовых полей реализацией определенных типов?
- 25. Являются ли реализацией кодировки url стандартизованными на разных языках?
- 26. Является ли ASP.NET MVC ошибочной реализацией шаблона архитектора MVC?
- 27. Должен ли я использовать основные данные?
- 28. Основные данные не сохраняют объекты и являются медленными
- 29. Основные данные v SQLite
- 30. Являются ли эти параметры шаблона значений одинаковыми?
Прослушивание [последнего эпизода подкаста Ruby Rogues] (http://instaca.st/b/bfe), о [Ruby Object Mapper] (https://github.com/rom-rb/rom) , Я обнаружил, что задаю тот же вопрос. Вы правы, что Core Data не реализует Data Mapper, но я думаю, что NSManagedObjectContext определенно реализует [Unit Of Work] (http://martinfowler.com/eaaCatalog/unitOfWork.html). –