Я пишу автономную служебную программу, которая, имея банку, содержащую аннотированный JPA-2 блок сохраняемости, должна программно получить список всех моих классов @Entity в конкретном блоке сохраняемости.
Я хотел бы решить, какой из двух подходов будет способом получить эту информацию и почему; или если есть другой лучший способ, о котором я не думал.
Программа на Java помещает jar в путь к классам, создает единицу персистентности из классов в jar с использованием методологий JavaSE. Затем он использует классы javax.persistence, чтобы получить метамодель JPA, извлечь из нее список токенов классов.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MY_ PERSISTENCE_UNIT");
Metamodel mm = emf.getMetamodel();
// loop these, using getJavaType() from Type sub-interface to get
// Class tokens for managed classes.
mm.getManagedTypes();
Программа сканирует каталоги и файлы внутри указанного jar-файла на наличие файлов persistence.xml, а затем находит файл с указанным именем модуля сохранения. Затем укажите путь к файлу, чтобы получить список <class>
XML-элементов, и прочитайте оттуда полные имена классов. Из имен создавайте токены класса.