JPA-сущности из отдельных пакетов, которые использовали одно соединение из основного пакета
Я хочу разделить мое приложение RAP на отдельные пакеты.
Первый комплект - это основной модуль. Содержит общие функции, такие как навигационное меню, открытие базы данных соединения. (база данных оракула)
Другие пакеты - это модули плагинов, которые содержат представления, jpa-сущности, бизнес-логику.
Мне нужно одно соединение с базой данных на приложение, на пользователя, но мне нужны jpa-сущности в отдельных пакетах и в основном модуле. Мне не нужно подключение к базе данных для каждого плагина.
Все плагины могут работать с сущностями основного модуля.
Только плагин может работать с self-plugin-module-entity.
Главный модуль не знает о сущностях в плагинах.
Является ли это возможным? Какие рамки могут мне помочь?
Извините за мой английский:-)
1 ответ
Можно иметь классы сущностей в отдельных пакетах, но:
- у вас должен быть файл persistence.xml, в котором перечислены все классы сущностей
- пакет, содержащий модуль постоянства, должен импортировать пакеты, в которых расположены классы сущностей
Вкратце: у вас могут быть классы сущностей в отдельных модулях, но у вас должно быть основное место, где вы собираете всю информацию для PU.
Если я хорошо понимаю ваш вопрос, вы хотите иметь основной модуль, который содержит PU, но не знает о классах сущностей. Извините, это невозможно.
Альтернатива:
У нас были аналогичные требования, поэтому мы решили оставить JPA и переключиться на комбинацию Liquibase и QueryDSL 2. Liquibase используется для определения схемы базы данных, а QueryDSL - для создания независимых от базы данных SQL-операторов безопасности. Со словами JPA: никаких классов сущностей, а только статическая метамодель.
Мы также разработали несколько модулей и плагин maven для поддержки этих технологий. Это еще не документировано, но если вы заинтересованы в этом технологическом стеке, я могу предоставить более подробную информацию.