#hibernate #persistent-set
#переход в спящий режим #постоянный набор
Вопрос:
Я использую стандарт JPA 2.0 и hibernate в качестве поставщика сохраняемости. При работе с ElementCollections мне любопытно узнать, почему не org.hibernate.collection.Постоянный набор обновляется?
Метод isRowUpdatePossible() в PersistentSet возвращает false . По сравнению с PersistentList, которые могут обновляться, Set выполняет несколько удалений и вставок вместо простого обновления.
Например, рассмотрим мою сущность, имеющую набор, который в настоящее время имеет значения {1, 2, 3}. Я обновляю набор, очищая его, а затем добавляя {4, 5, 6}. При вызове EntityManager.merge (entity) запускаются запросы 3 на удаление и вставку.
Если в приведенном выше примере я использую список, то запускается только один запрос на обновление со значениями привязки.
Количество запросов приводит меня к выводу использовать список, когда моя база данных может избежать дубликатов в столбце.
Подводя итог вопросам
- Почему org.hibernate.collection не работает.Постоянный набор обновляется? Метод isRowUpdatePossible() в PersistentSet возвращает false .
- Лучше ли устанавливать список, когда база данных может обрабатывать дубликаты?
Мысли по этим вопросам были бы оценены.
Комментарии:
1. Я не понимаю, если вы используете JPA, почему у вас есть функции, специфичные для поставщика, такие как постоянный набор и список, которые вы упоминаете? Разве вы не можете выполнить работу с обычным JPA?
2. Я думаю, вы неправильно поняли мой вопрос. Моя точка зрения была связана с производительностью. Почему set не обновляется и должен ли List быть предпочтительнее set?