JPA-сущности из отдельных пакетов, которые использовали одно соединение из основного пакета

Я хочу разделить мое приложение RAP на отдельные пакеты.

Первый комплект - это основной модуль. Содержит общие функции, такие как навигационное меню, открытие базы данных соединения. (база данных оракула)

Другие пакеты - это модули плагинов, которые содержат представления, jpa-сущности, бизнес-логику.

Мне нужно одно соединение с базой данных на приложение, на пользователя, но мне нужны jpa-сущности в отдельных пакетах и ​​в основном модуле. Мне не нужно подключение к базе данных для каждого плагина.

Все плагины могут работать с сущностями основного модуля.

Только плагин может работать с self-plugin-module-entity.

Главный модуль не знает о сущностях в плагинах.

Является ли это возможным? Какие рамки могут мне помочь?

Извините за мой английский:-)

1 ответ

Можно иметь классы сущностей в отдельных пакетах, но:

  • у вас должен быть файл persistence.xml, в котором перечислены все классы сущностей
  • пакет, содержащий модуль постоянства, должен импортировать пакеты, в которых расположены классы сущностей

Вкратце: у вас могут быть классы сущностей в отдельных модулях, но у вас должно быть основное место, где вы собираете всю информацию для PU.

Если я хорошо понимаю ваш вопрос, вы хотите иметь основной модуль, который содержит PU, но не знает о классах сущностей. Извините, это невозможно.

Альтернатива:

У нас были аналогичные требования, поэтому мы решили оставить JPA и переключиться на комбинацию Liquibase и QueryDSL 2. Liquibase используется для определения схемы базы данных, а QueryDSL - для создания независимых от базы данных SQL-операторов безопасности. Со словами JPA: никаких классов сущностей, а только статическая метамодель.

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

Другие вопросы по тегам