我正在编写一个独立的实用程序,给定一个装有JPA-2注释的持久性单元的jar,它需要以编程方式获取特定持久性单元中所有@Entity类的列表。
我想决定使用两种方法中的哪一种来获取此信息,以及为什么;还是还有我没想到的更好的方法。
Java程序将jar放在类路径上,使用JavaSE方法从jar中的类创建持久性单元。然后,它使用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文件,然后查找具有指定持久性单元名称的目录。然后,使用XPath文件获取<class>
XML元素列表,并从那里读取完全限定的类名。从名称中构建类标记。
如果您的jar格式正确(persistence.xml位于正确的位置-在META-INF文件夹中),那么一切看起来都很好。
不必在容器内运行实用程序,JPA并不是JavaEE规范的一部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句