Jak mogę uzyskać wszystkie klasy @Entity z jednostki trwałości?
Piszę samodzielny program narzędziowy, który, biorąc pod uwagę słoik zawierający jednostkę trwałości z adnotacjami JPA-2, musi programowo uzyskać listę wszystkich moich klas @Entity w określonej jednostce trwałości.
Chciałbym zdecydować, które z dwóch podejść byłoby sposobem na uzyskanie tych informacji i dlaczego; lub jeśli jest inny lepszy sposób, o którym nie pomyślałem.
Rozwiązanie 1Program Java umieszcza jar w ścieżce klasy, tworzy jednostkę trwałości z klas w jar przy użyciu metodologii JavaSE. Następnie używa klas javax.persistence, aby uzyskać metamodel JPA, wyciągając z niego listę żetonów klas.
<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>Rozwiązanie 2
Program skanuje katalogi i pliki wewnątrz określonego jar dla plików persistence.xml, a następnie znajduje katalog o określonej nazwie jednostki trwałości. Następnie XPath plik, aby uzyskać listę<class>
Elementy XML i stamtąd w pełni kwalifikowane nazwy klas. Z nazwisk buduj żetony klas.