Если вам не нравятся стандартные библиотеки ORM, такие как Hibernate, почему бы вам не использовать такой инструмент, как iBATIS ? iBATIS - это нечто среднее между Hibernate и простым SQL. По сути, он сопоставляет результирующие наборы с объектами Java, однако не пишет для вас SQL.
Мы переключились на него с Hibernate после того, как - как и вы - обнаружили, что Hibernate не очень хорошо работает для более сложных схем.
Он поддерживает динамическое усовершенствование классов, однако также поддерживает избегание выбора N + 1 путем помещения соединения в SQL (извините, это плохо объяснено, но для получения дополнительной информации обратитесь к руководству пользователя ). *
В любом случае, чтобы ответить на ваш реальный вопрос, я бы, вероятно, реализовал это с помощью cglib или чего-то подобного для улучшения класса (создания динамического подкласса). Вы сохраняете карту свойств, которые были загружены или нет, а затем вам не нужны специальные значения.
Однако я думаю, что, вероятно, лучше использовать библиотеку, которая уже существует, и изобретать колесо никогда не будет хорошей идеей, если это вообще возможно.