Я настроил Hibernate, чтобы дать мне Set<Integer>
, который я конвертирую внутренне в Set<MyObjectType>
(MyObjectType
может быть представлено одним целым числом).То есть, когда Hibernate вызывает мой метод void setMyObjectTypeCollection(Set<Integer> theSet)
, я перебираю все элементы в theSet
и преобразовываю их в MyObjectType
.Когда Hibernate вызывает мой Set<MyObjectType> getMyObjectTypeCollection()
, я выделяю новый HashSet и преобразую MyObjectType
s в Integer
s.
Проблема заключается в том, что каждый раз, когда я вызываю commit
, Hibernate удаляет все в коллекции, а затемповторно вставляет его независимо от того, был ли изменен какой-либо элемент коллекции или даже что сама коллекция изменилась.
Хотя технически я не считаю это ошибкой, я боюсь, что удаление и вставка многих строк оченьчасто приводит к излишней медленной работе базы данных.
Есть ли способ заставить Hibernate распознать, что, хотя я выделил и возвратил другой экземпляр коллекции, эта коллекция фактически содержит все элементы, которые она использовалаи что нет необходимости удалять и заново вставлять их все?