2012-05-14 1 views
0

Мы будем поддерживать несколько клиентов, и некоторые таблицы DB не должны быть видимыми для всех клиентов. Тем не менее, мы хотели бы иметь идентичную схему для всех клиентов из-за простоты развертывания.Можно скрыть таблицы в зависимости от конфигурации развертывания?

1) Возможно ли «скрыть» некоторые таблицы, чтобы у нас была идентичная схема для клиентов, но некоторые таблицы видны только в некоторых вариантах развертывания? Мы используем Hibernate, и я не уверен, как это повлияет на отображение.

2) Еще один вариант заключается в создании представлений и их сопоставлении с Hibernate в некоторых случаях, когда физическая структура таблицы не должна отображаться. Будет ли это работать с базой данных DB2?

Любые мысли? Спасибо за ваш вклад! :)

+0

Вы можете использовать SchemaExport для создания базы данных и включать только сопоставления, которые вам нужны при создании объекта конфигурации. – Firo

ответ

0

В тот момент, когда hibernate открывает новую конфигурацию (то есть когда вы вызываете Configuration.configure()), hibernate проверяет все файлы сопоставления, найденные в файле hibernate.cfg.xml. Эта проверка включает проверку, если существует таблица и сопоставленные столбцы. Если они не существуют, вы сразу получаете исключение.

Что вы можете сделать:
Вы поставляете те же сопоставление файлы для всех клиентов, но каждый клиент получает его собственный hibernate.cfg.xml, где только таблицы, которые он, включены в <mapping...> теге. В этом случае вы даже можете доставлять разные файлы сопоставления для одной и той же таблицы (полезно, если у разных клиентов разные версии этой таблицы), и только один из этих файлов сопоставления упоминается в файле hibernate.cfg.xml.

+0

К сожалению, если клиент имеет доступ к этим файлам сопоставления, это небезопасно. –

Смежные вопросы