Hibernate реализация простых отношений «многие ко многим» - словарь или список? - PullRequest
1 голос
/ 09 октября 2009

У меня есть 3 таблицы БД: Person, Address и PersonAddress. Персональный адрес - это простая таблица соединения (хранятся только идентификаторы персоны и адреса).

В моей доменной модели у меня есть Персона и Адрес. Person настроен так, чтобы иметь отношение «многие ко многим» к Address (через PersonAddress). В коде это реализовано с помощью List<Address>.

Мне сказали, что я получу лучшую производительность от nHibernate, если я ...

  1. Создание объекта домена PersonAddress
  2. Конфигурирование Person для отношения один-ко-многим с PersonAddress
  3. Сконфигурируйте индекс «многие ко многим» для Address в этом отношении
  4. Реализуйте это в коде с Dictionary<Address, PersonAddress>

Это правда?

Ответы [ 2 ]

2 голосов
/ 09 октября 2009

Я бы не стал создавать ненужный класс в домене только из-за этого. Использование словаря для повышения производительности также звучит странно для меня.

Вы можете использовать idbag , это быстрее обновить. (Это отображается как список в домене, но имеет идентификатор в базе данных).

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

1 голос
/ 09 октября 2009

Я также не стал бы вводить сложное сопоставление для повышения производительности в NHibernate до тех пор, пока необходимость в этом не будет установлена.

Наряду со стандартным сопоставлением «многие ко многим» вы можете использовать стратегию «один ко многим» с объектом PersonAddress (PersonAddress имеет коллекцию Persons и коллекцию адресов). Эта стратегия используется, когда вы хотите сохранить дополнительную информацию об отношениях Персона-Адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...