2015-01-30 2 views

ответ

0

В коллекциях у нас ограниченный размер. Если мы пытаемся вставить больше данных, он будет усечен. Отношения мы можем использовать n no. данных.

Коллекции быстрее, чем отношения, но в коллекциях мы можем использовать только одну только многие отношения, для многих ко многим мы должны использовать отношения только ....

0

Добавление к тому, что добавило Raghav, коллекцию внутренне хранится как csv PK в одном столбце. Следовательно, ограничение размера из-за ограничения длины поля в любой базе данных.

Отношение, однако, может храниться в отдельной таблице, и, следовательно, неограниченное сопоставление может быть выполнено.

1

Его важное значение для понимания гибридов решительно препятствует использованию коллекций, вместо этого используйте отношения.

Как указано выше, коллекции сохраняются как запятые, отделенные от структуры данных, и поэтому вы можете увидеть проблему обрезания данных, где, поскольку отношения имеют рациональную структуру данных для создания новой таблицы и таблицы карт для объединения двух таблиц.

коллекция из-за этого хранение структура - не можете найти.

Я бы сказал, что для очень простой (1: n) связи с ограниченными данными вы все равно можете использовать коллекции. В то время как для любого комплексного отношения (m: n/1: n) всегда используются отношения

0

Collection Корневой интерфейс в иерархии коллекции.

Коллекция представляет собой группу объектов, известных как ее элементы.

Некоторые коллекции позволяют Дублировать элементы, а другие нет.

Некоторые Заказанный и другие маркированного

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

HashMap только действительно используется в тех случаи, когда есть некоторая логическая причина иметь специальные клавиши, соответствующие значения

0

Коллекции, сохраняется в качестве сериализованного объекта в одном столбце в БДЕ.

Отношения сохраняются в обычном порядке реляционной базы данных - с помощью внешнего ключа на другом столе или ссылку таблицы (в зависимости от мощности отношения)

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

1

Как 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.

8

В принципе, есть два технически различных способов коллекций моделирования в Hybris:

  1. CollectionTypes

    • Придумайте CollectionTypes в Hybris как рюкзак, смонтированных на тип
    • По времени выполнения, CollectionTypes разрешаются в Сборник какого-либо предмета, например Список MediaModels
    • Может вызвать переполнение, в результате чего усечение и, следовательно, потеря данных
    • Труднее найти и более низкую производительность
    • На уровне базы данных, CollectionTypes являются запятыми список ПКС, поэтому максимум
  2. RelationTypes

    • Создать ссылки между всеми типами типов Создать безопасные отношения типа n-to-m: связывать только такие элементы типа источника/цели, указанные в отношении
    • Значения отношений сохраняются в отдельной таблице базы данных + Каждое значение хранится в отдельной строке таблицы
+0

Я не думаю, что CollectionTypes хранятся в виде разделенных запятой списков PK (если только это не изменилось недавно). Когда я когда-либо взглянул на них, они просто сериализованы java pojos, написанные как BLOB. Может, это просто делает это для коллекций простых типов ..? – kabadisha

+0

@kabadisha да, они хранятся в виде разделенного запятой списка. Попробуйте и посмотрите на БД, чем вы это увидите – KilleKat

7

Я полностью согласен с @KilleKat комментарием, он упомянул все различия между CollectionType и RelationType в Hybris.

Я прикрепил несколько диаграмм, чтобы иметь более четкое представление о предмете.

CollectionTypes: (будет разумно использовать) enter image description here

RelationTypes: (рекомендуется) enter image description here