Я новичок в hybris, Что такое отношения типа diff b/w и коллекции, почему мы идем на отношения вместо коллекций.Разница между отношениями и коллекциями в гибридах?
ответ
В коллекциях у нас ограниченный размер. Если мы пытаемся вставить больше данных, он будет усечен. Отношения мы можем использовать n no. данных.
Коллекции быстрее, чем отношения, но в коллекциях мы можем использовать только одну только многие отношения, для многих ко многим мы должны использовать отношения только ....
Добавление к тому, что добавило Raghav, коллекцию внутренне хранится как csv PK в одном столбце. Следовательно, ограничение размера из-за ограничения длины поля в любой базе данных.
Отношение, однако, может храниться в отдельной таблице, и, следовательно, неограниченное сопоставление может быть выполнено.
Его важное значение для понимания гибридов решительно препятствует использованию коллекций, вместо этого используйте отношения.
Как указано выше, коллекции сохраняются как запятые, отделенные от структуры данных, и поэтому вы можете увидеть проблему обрезания данных, где, поскольку отношения имеют рациональную структуру данных для создания новой таблицы и таблицы карт для объединения двух таблиц.
коллекция из-за этого хранение структура - не можете найти.
Я бы сказал, что для очень простой (1: n) связи с ограниченными данными вы все равно можете использовать коллекции. В то время как для любого комплексного отношения (m: n/1: n) всегда используются отношения
Collection Корневой интерфейс в иерархии коллекции.
Коллекция представляет собой группу объектов, известных как ее элементы.
Некоторые коллекции позволяют Дублировать элементы, а другие нет.
Некоторые Заказанный и другие маркированного
Чтобы получить действительно хорошее представление о том, что каждая коллекция хороша для и их характеристики, я рекомендовал бы получить хорошее представление о структурах данных, таких как массивы, связанные списки, бинарные Поиск деревьев, Hashtables, а также стеков и очередей. На самом деле нет никакой возможности изучить это, если вы хотите быть эффективным программистом на любом языке.
HashMap только действительно используется в тех случаи, когда есть некоторая логическая причина иметь специальные клавиши, соответствующие значения
Коллекции, сохраняется в качестве сериализованного объекта в одном столбце в БДЕ.
Отношения сохраняются в обычном порядке реляционной базы данных - с помощью внешнего ключа на другом столе или ссылку таблицы (в зависимости от мощности отношения)
типы коллекции обескураживают, поскольку они не могут быть найдены с помощью flexiblesearch и имеют значительные ограничения производительности при работе с коллекциями более чем нескольких объектов.
Как Sumit говорит выше,
CollectionType обескураживают и RelationType следует использовать всякий раз, когда это возможно.Это связано с тем, что максимальная длина поля базы данных CollectionType ограничена, и CollectionType со многими значениями может привести к усечению значений. Кроме того, значения CollectionTypes записываются в формате CSV, а не нормализованно. Вследствие этого, hybris рекомендует использовать RelationTypes, когда это возможно.
- CollectionType: CollectionTypes основаны на классе Java Collection т.е. Коллекция представляет собой список элементов.
1: n - Держите ссылки на соответствующие значения через атрибут исходного элемента, например список первичных ключей.
n: 1 - Хранить значения атрибутов в соответствующих целевых элементах и использовать метод getter в источнике, чтобы получить значения. - RelationType:
н: м - Внутренне, элементы с обеих сторон отношения связаны друг с другом с помощью экземпляров типа хелпера под названием LinkItem. LinkItems содержат два атрибута: SourceItem и TargetItem, которые содержат ссылки на соответствующий элемент.
Для каждой записи в рамках отношения (другими словами, для каждой ссылки от одного элемента к другому) существует экземпляр LinkItem, в котором хранятся PK соответствующих элементов. Экземпляры LinkItem обрабатываются прозрачно и автоматически платформой: на уровне API вам нужно использовать только методы getter и setter.
В принципе, есть два технически различных способов коллекций моделирования в Hybris:
CollectionTypes
- Придумайте CollectionTypes в Hybris как рюкзак, смонтированных на тип
- По времени выполнения, CollectionTypes разрешаются в Сборник какого-либо предмета, например Список MediaModels
- Может вызвать переполнение, в результате чего усечение и, следовательно, потеря данных
- Труднее найти и более низкую производительность
- На уровне базы данных, CollectionTypes являются запятыми список ПКС, поэтому максимум
RelationTypes
- Создать ссылки между всеми типами типов Создать безопасные отношения типа n-to-m: связывать только такие элементы типа источника/цели, указанные в отношении
- Значения отношений сохраняются в отдельной таблице базы данных + Каждое значение хранится в отдельной строке таблицы
Я не думаю, что CollectionTypes хранятся в виде разделенных запятой списков PK (если только это не изменилось недавно). Когда я когда-либо взглянул на них, они просто сериализованы java pojos, написанные как BLOB. Может, это просто делает это для коллекций простых типов ..? – kabadisha
@kabadisha да, они хранятся в виде разделенного запятой списка. Попробуйте и посмотрите на БД, чем вы это увидите – KilleKat
Вы можете пометить вопрос как answeared плз? – KilleKat