Преобразование между коллекциями Hibernate и моими собственными коллекциями - PullRequest
1 голос
/ 24 июля 2010

Я настроил 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 распознать, что, хотя я выделил и возвратил другой экземпляр коллекции, эта коллекция фактически содержит все элементы, которые она использовалаи что нет необходимости удалять и заново вставлять их все?

1 Ответ

1 голос
/ 25 июля 2010

Я думаю, что наилучшим способом достижения вашей цели было бы использование UserType .В основном это позволяет вам обрабатывать преобразование из SQL в ваши собственные объекты (туда и обратно).

Вы можете увидеть пример того, как его использовать здесь .

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