Bag
является неупорядоченной коллекцией и, в отличие от idbag
, он не использует дополнительный столбец для хранения каждого индекса элемента.
Нет такой вещи, как вариант использования, когда bag
, и idbag
не будет. Единственная разница в их эффективности:
Суммы являются наихудшим случаем, так как они допускают повторяющиеся значения элементов и, поскольку у них нет столбца индекса, первичный ключ не может быть определен. Hibernate не имеет возможности различать повторяющиеся строки. Hibernate разрешает эту проблему, полностью удаляя в одном DELETE и воссоздавая коллекцию всякий раз, когда она изменяется. Это может быть неэффективным.
blockquote>
idbag
- это устаревшее отображение гибернации, и они были использованы для предоставления более эффективных альтернативных альтернативных ассоциацийВы можете определить семантику idbag с помощью аннотации JPA @OrderColumn :
@OneToMany(mappedBy = "department") @OrderColumn(name = "index_id") private List
employees; Таким образом вы можете использовать оба Списки и наборы для упорядочения коллекций.
Итак, старайтесь придерживаться двунаправленных ассоциаций, поскольку они являются наиболее эффективными, и они лучше имитируют отношения с базой данных. Если вам нужна стратегия индекса определенного элемента, используйте ассоциацию @OrderColumn.