Как я могу упаковать методы для работы с любой базой данных, которая содержит необходимые таблицы - PullRequest
0 голосов
/ 25 августа 2011

Я только недавно начал использовать hibernate, и поэтому я прошу прощения, если это глупый вопрос.

Я хочу упаковать часть своего кода в модуль, который затем могут использовать различные приложения.Например, пакет, который обрабатывает отправку SMS-сообщений.Этот пакет выполняет некоторую работу с базой данных, чтобы получить базовые данные конфигурации, а затем может вести некоторую регистрацию транзакций.Затем он будет добавлен в приложения, требующие функции SMS.Поэтому пакет должен требовать, чтобы вызывающее приложение содержало конкретные таблицы конфигурации и журналирования, требуемые для пакета.

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

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Мы находимся в аналогичной ситуации, поэтому вот что мы делаем:

  1. Все сущности содержатся в нашей библиотеке, и, таким образом, DAO имеют полное знание этих сущностей.
  2. Еслиприложению нужно больше полей в сущности, оно подклассирует базовую сущность и подклассы соответствующего DAO (который параметризован с помощью обобщенных элементов).
  3. Библиотека не содержит persistence.xml, но наши приложения определяютодин, перечисляющий jar библиотеки с использованием элемента <jar-file>.Обратите внимание, что для того, чтобы это работало, все DAO должны использовать одну и ту же единицу персистентности, которая определена в этом persistence.xml.
  4. Приложение должно будет предоставить определения таблиц в библиотеке, но они могут быть перезаписаныиспользуя файл XML (в нашем случае с именем orm.xml).Этот файл определен в нашем persistence.xml.

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

0 голосов
/ 25 августа 2011

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

...