Persistence.xml в ВОЙНЕ и ВОЙНЕ

#jpa #jakarta-ee #war #packaging #persistence.xml

#jpa #джакарта-ee #Война #упаковка #persistence.xml

Вопрос:

У меня есть файл jar, который заботится обо всей логике сохранения. Этот файл jar содержит persistence.xml файл со всеми необходимыми конфигурациями. Моя война использует этот файл jar как зависимость, но не должна знать, как он сохраняется в базе данных. У меня есть несколько вопросов:

1) В моей WAR есть классы @Entity; Нужно ли мне создавать persistence.xml в разделе «ресурсы / МЕТА-ИНФОРМАЦИЯ»? У меня уже есть это в файле JAR.

2) Если мне нужно создать другой persistence.xml на ВОЙНЕ, как я могу унаследовать это persistence.xml из jar-файла?

Комментарии:

1. Если jar заботится обо всей логике сохранения, все объекты должны быть в этом jar. С архитектурной точки зрения «некоторым» объектам нет смысла жить только внутри вашей войны, очевидно, вы хотите, чтобы все они были частью одной и той же единицы сохранения.

2. Я этого не делал, но обычно файлы ищутся в classpath в определенном порядке, который вы можете получить, вызвав ((java.net.URLClassLoader) getClass().getClassLoader()).getURLs() , если этот classloader наследует URLClassLoader, что в веб-приложении почти наверняка происходит. Это определенно происходит в Tomcat. При попытке загрузки ресурса (а именно META-INF/persistence.xml ) Он остановится на первом пути к классу, в котором он находит файл. Это ДОЛЖЕН быть ваш файл WAR. Если он существует позже в файле JAR, он, скорее всего, будет проигнорирован.

3. Итак, если у меня есть persistence.xml в jar-файле мне не нужен другой файл in war, верно?

4. Да, он вам не нужен в файле war, но если он у вас там есть, он переопределит любой другой persistence.xml в файлах jar, если имя поставщика и название подразделения совпадают.