Обратные инженерные проверки ограничений и индексов с Hibernate? - PullRequest
1 голос
/ 16 февраля 2011

Мне была поручена обратная инженерия отображений Hibernate из большой устаревшей базы данных sql-сервера. В базе данных широко используются проверочные ограничения (по несколько на таблицу) и индексы, и хотя я бы сказал, что это проблемы DBA, мы обязаны сохранить их в отображениях Hibernate.

Используя Hibernate Tools для Eclipse, я могу успешно преобразовать наши таблицы в файлы .hbm.xml; однако ни одно из проверочных ограничений или индексов не присутствует. Я знаю, что можно вручную добавлять как проверочные ограничения, так и индексы непосредственно к отображению, например ::100100

<class name="package.Tablename" 
       table="TABLENAME" 
       schema="dbo" 
       catalog="MyDB"
       check="START_DATE &lt; END_DATE"> <!-- here -->
   ...
   <property name="endDate" type="timestamp" index="IDX_END_DATE"> <!-- here -->
            <column name="END_DATE" />
   </property>
   ...
</class>

У нас есть сотни таблиц и тысячи индексов / проверочных ограничений, поэтому добавить их вручную в обратные инженерные сопоставления не реально.

Можно ли заставить Hibernate Tools выкладывать это за нас? Если так, то как? Если нет, может кто-нибудь порекомендовать другой инструмент, который будет делать это?

1 Ответ

0 голосов
/ 07 апреля 2011

Это невозможно сделать «из коробки» с помощью инструментов Hibernate; однако можно добавить DDL к вашим отображениям внутри элементов <database-object>. Для обратного проектирования этой информации вам нужно написать пользовательский класс утилит , который вызывается с помощью пользовательского шаблона .

Поскольку загрузка в <database-object> с не обеспечила уровень абстракции и общую удобство для пользователя, которого хотел мой работодатель, мы решили не использовать этот подход и смоделировали нашу базу данных другим способом.

...