Динамическое отображение в спящем режиме? - PullRequest
2 голосов
/ 22 октября 2009

На самом деле я ищу что-то вроде этого:

Вы изменяете таблицу в дБ (например, добавляете столбец); это должно быть отражено во внешнем интерфейсе без жесткого кодирования файла сопоставления ...

Спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 22 октября 2009

Hibernate является ORM. Таким образом, существует объектная модель между интерфейсом и базой данных. Как эта объектная модель должна представлять динамические изменения? Столбцы обычно отображаются на свойства. Если вы добавите один в базу данных, вы все равно пропустите свойство в модели класса.

Если вы решите проблему в объектной модели, используя словари, есть возможность напрямую сопоставить словарь как карту, но тогда данные будут не в столбцах, а в строках.

Или вы отображаете словарь как динамический компонент, который будет отображаться в столбцах. Это, наверное, то, что вы ищете.

Что я пытаюсь сказать: сначала вы должны решить проблему в объектной модели. Тогда вы можете спросить, как это может быть сопоставлено. Если у вас нет объектной модели, вам вообще не нужен спящий режим.

0 голосов
/ 18 ноября 2009

Возможно генерировать конфигурацию гибернации и классы домена на основе схемы базы данных. Может быть, это то, что вы ищете? Конечно, вам придется компилировать ваше приложение каждый раз, когда меняется схема базы данных.

Возможно, вы могли бы рассмотреть и другие инструменты отображения, такие как iBatis , где вы можете определять запросы и т. Д. В конфигурации.

0 голосов
/ 22 октября 2009

Когда Hibernate запускается, он отображает все столбцы в объектах домена на столбцы в таблицах, и они поддерживаются SessionFactory. То, что вы хотите сделать, это карта «на лету», которая не поддерживается, и вам придется создать для этого собственную гибридную установку JPA / Hibernate. Как предложил @Stephan, я бы начал с объектной модели, поэтому внесите изменения (добавьте свойства) в ваши доменные объекты, а затем распространите их на вашу базу данных.

Это будет означать, что все ваши текущие запросы теперь должны будут динамически учитывать эти новые свойства - если все, что у вас есть, - from DomainObject запросов, то это не проблема.

Я хочу сказать, что выполнение того, что вы хотите, создает немедленные и неортогональные проблемы, которые, по моему мнению, просто не стоят того. Рассмотрим другую стратегию.

...