Как я могу получить все классы @Entity из модуля постоянства?
Я пишу отдельную служебную программу, которая, учитывая банку, содержащую аннотированный блок персистентности JPA-2, должна программно получить список всех моих классов @Entity в конкретном блоке персистентности.
Я хотел бы решить, какой из двух подходов будет способом получения этой информации и почему; или, если есть другой лучший способ, о котором я не думал.
Solution 1Программа Java помещает jar в путь к классам, создает единицу постоянства из классов в jar, используя методологии JavaSE. Затем он использует классы javax.persistence для получения метамодели JPA, извлекая из нее список токенов классов.
<code>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(); </code>Solution 2
Программа сканирует каталоги и файлы в указанном jar на наличие файлов persistence.xml, затем находит один с указанным именем единицы сохраняемости. Затем XPath файл, чтобы получить список<class>
XML-элементы и считайте оттуда полные имена классов. Из имен строим токены классов.