Hibernate - Как сохранить новый элемент в коллекции без загрузки всей коллекции
В моей модели есть коллекция, которая содержит набор «предыдущих версий» моего объекта корневого домена. Поэтому предыдущие версии являются «неизменяемыми», и мы никогда не захотим их обновлять, а будем добавлять только прошлые версии по мере их появления. Также «версионный» объект домена является довольно сложным и вызывает тяжелый доступ к базе данных для извлечения.
Когда у меня есть новая версия одного из этих объектов, я хочу сохранить ее вместе с другими без загрузки всего набора. Расширенный FAQ имеет несколько советов по этому поводу:
Почему Hibernate всегда инициализирует коллекцию, когда я только хочу добавить или удалить элемент?
К сожалению, API коллекций определяет возвращаемые значения метода, которые могут быть вычислены только при попадании в базу данных. Есть три исключения из этого: Hibernate может добавить к<bag>
, <idbag>
или же<list>
объявлен сinverse="true"
без инициализации коллекции; возвращаемое значение всегда должно быть истинным.
Если вы хотите избежать дополнительного трафика базы данных (т. Е. В критичном для производительности коде), реорганизуйте свою модель, чтобы использовать только связи «многие к одному». Это почти всегда возможно. Затем используйте запросы вместо доступа к коллекции.
Я новичок во всем этом и не уверен на 100% в том, как реорганизовать вашу модель, чтобы использовать только связи «многие к одному». Может ли кто-нибудь дать мне пример урока, чтобы я мог узнать, как это решит мою проблему?