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