Разница между @OneToMany и @ElementCollection?
в чем разница между использованием @OneToMany и @ElementCollection аннотация, так как оба работают над отношением один ко многим?
5 ответов:
Я считаю
@ElementCollectionв основном для отображения не-сущностей (встраиваемых или основных) в то время как@OneToManyиспользуется для отображения объектов. Итак, какой из них использовать, зависит от того, чего вы хотите достичь.
ElementCollectionявляется стандартной аннотацией JPA, которая теперь предпочтительнее собственной аннотации HibernateCollectionOfElements.Это означает, что коллекция не коллекция, но коллекция простые типы (строки, и т. д.) или набор встраиваемых элементов (класс с аннотацией
@Embeddable).Это также означает, что элементы полностью принадлежат содержащим их сущностям: они изменяются при изменении сущности, удаляются при изменении сущности удаленные и т. д. Они не могут иметь свой собственный жизненный цикл.
@ElementCollectionпозволяет упростить код, когда вы хотите реализовать связь "один ко многим" с простым или встроенным типом. Например, в JPA 1.0, когда вы хотели иметь отношение "один ко многим" к спискуStrings, Вы должны были создать простой объект POJO (StringWrapper), содержащие только первичный ключ иStringна вопрос:@OneToMany private Collection<StringWrapper> strings; //... public class StringWrapper { @Id private int id; private String string; }С JPA 2.0 вы можете просто написать:
@ElementCollection private Collection<String> strings;проще, не так ли? Обратите внимание, что вы все еще можете управлять таблицей и столбцом имена с помощью
@CollectionTableПримечание.Читайте также:
@ElementCollectionзнаки коллекции. Это не обязательно означает, что эта коллекция ссылается на 1-n соединение.
основной или встроенный: @ElementCollection
объекты: @OneToMany или @ManyToMany@ElementCollection:
- отношение управляется (только) сущностью, в которой это отношение определено
 - таблица содержит ссылку на идентификатор объекта-владельца плюс основные или встроенные атрибуты
 @OneToMany / @ManyToMany:
- может также управляться другим сущность
 - таблица соединений или столбцы обычно содержат только ссылки на идентификаторы