有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA元模型和实体类

我可以在运行时创建元模型的实体类,还是必须手动创建它们

如果我可以在运行时创建它们(我想使用EntityType),那么这个解决方案的优点和缺点是什么

好吧,有点误解。。。我想我应该为我所有的实体类创建名为EntityClass的N个类。。。现在我注意到Netbeans创建文件EntityClass。类,我可以引用它们! 有关更多信息,请参见网页上的链接,以在netbeans中激活此选项:

http://blogs.oracle.com/arungupta/entry/totd_148_jpa2_metamodel_classes

好的,现在的问题是:我如何选择正确的答案 对不起,Seam,但Piotr更清楚、更具体


共 (2) 个答案

  1. # 1 楼答案

    您可以自己创建元模型,也可以使用元模型生成器为您创建元模型。此生成器特定于JPA提供商,也就是说,对于EclipseLink,它可以这样执行:

    javac -processor org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor 
          -proc:only 
          -classpath lib/*.jar;punit 
          *.java
    

    但是,它不是在运行时执行的,而是在构建应用程序时或作为单独的进程执行的。在运行时这样做没有多大意义,因为您在创建查询时需要这个元模型(当然,如果您想使用它的话),所以在开发阶段

    为了使这个答案更加完整,您还可以使用EntityManager#getMetamodel()EntityManagerFactory#getMetamodel()访问元模型而不指定它

    我肯定会选择显式生成元模型,并在编写标准API查询时使用它。它只是让它更清晰、更明显,并让您在开发阶段发现错误

  2. # 2 楼答案

    只有在编译时生成静态元模型时,静态元模型才有意义,因为它是一种编译时安全的技术,可以确保您根据实际存在的属性进行链接。与动态查找属性相比,使用静态元模型没有运行时优势,它完全是为了避免程序员错误