Я бы сказал, прежде всего, потратить немного времени на анализ вашей доменной модели.
Вам нужно выполнить запросы к этим объектам, которые вы хотите сохранить (помимо чтения и сохранения)? Будут ли эти запросы зависеть от зависимостей этих объектов? Вы действительно хотите сохранить весь граф объектов, с которым связан ваш объект?
Мое первое впечатление - решение сохранить один объект из сторонней библиотеки / фреймворка не очень хорошая идея, потому что:
- у вас нет контроля над зависимостями / отношениями объекта и жизненным циклом объекта. Он создан этой третьей стороной, верно?
- вы должны подчиняться этой конкретной структуре, которая, скорее всего, не оптимизирована / не предназначена для персистентных целей. Создание отображений Hibernate для не поддерживаемой вами структуры утомительно.
- в конечном итоге вы получите больше информации, чем вам нужно
- Если вы когда-либо обновите версию используемой вами сторонней библиотеки, ваши отображения в Hibernate могут больше не совпадать.
- Есть ряд принципов проектирования, которые будут
Я думаю, вы были бы счастливы с разработкой своей собственной структуры и продолжали бы это. Затем есть адаптер, который преобразует вашу структуру в объекты, ожидаемые структурой. Таким образом, ваш код будет изолирован от всех вещей, которые фреймворк делает или когда-либо делает с этими объектами. Ваш код персистенции остается прежним, только адаптер может измениться.
Надеюсь, это имеет смысл. Если вы уже рассмотрели все это и все еще хотите сохранить эту структуру, дайте мне знать! :)
UPDATE
Я не имею в виду создание структуры, которая реализует те же интерфейсы, что и сторонний объект, я имел в виду создание полностью переработанной структуры, приспособленной для персистентности в реляционной базе данных. Затем адаптер создаст стороннюю структуру на основе ваших объектов.