java JPA元模型和实体类
我可以在运行时创建元模型的实体类,还是必须手动创建它们
如果我可以在运行时创建它们(我想使用EntityType
),那么这个解决方案的优点和缺点是什么
好吧,有点误解。。。我想我应该为我所有的实体类创建名为EntityClass的N个类。。。现在我注意到Netbeans创建文件EntityClass。类,我可以引用它们! 有关更多信息,请参见网页上的链接,以在netbeans中激活此选项:
http://blogs.oracle.com/arungupta/entry/totd_148_jpa2_metamodel_classes
好的,现在的问题是:我如何选择正确的答案 对不起,Seam,但Piotr更清楚、更具体
# 1 楼答案
您可以自己创建元模型,也可以使用元模型生成器为您创建元模型。此生成器特定于JPA提供商,也就是说,对于EclipseLink,它可以这样执行:
但是,它不是在运行时执行的,而是在构建应用程序时或作为单独的进程执行的。在运行时这样做没有多大意义,因为您在创建查询时需要这个元模型(当然,如果您想使用它的话),所以在开发阶段
为了使这个答案更加完整,您还可以使用
EntityManager#getMetamodel()
或EntityManagerFactory#getMetamodel()
访问元模型而不指定它我肯定会选择显式生成元模型,并在编写标准API查询时使用它。它只是让它更清晰、更明显,并让您在开发阶段发现错误
# 2 楼答案
只有在编译时生成静态元模型时,静态元模型才有意义,因为它是一种编译时安全的技术,可以确保您根据实际存在的属性进行链接。与动态查找属性相比,使用静态元模型没有运行时优势,它完全是为了避免程序员错误