JPA中NamedQuery注释的好处是什么?

时间:2015-04-13 15:42:11

标签: jpa

刚才我为JPA实体写了一个NamedQuery,对此感到非常高兴。

在这里。

@NamedQuery(name=Panties.RED_PANTIES_QRY, query="SELECT p FROM Panties p WHERE p.color = red")
public class Panties implements Serializable {

    public static final String RED_PANTIES_QRY = "panties.red_panties";

   //getters and setters

}

使用

  entityManager.createNamedQuery(Panties.RED_PANTIES_QRY).getResultList();

还可以省略NamedQuery注释,只做

public class Panties implements Serializable {

        public static final String RED_PANTIES_QRY = "SELECT p FROM Panties p WHERE p.color = red";

       //getters and setters

    }

使用

entityManager.createQuery(Panties.RED_PANTIES_QRY).getResultList();

所以问题是。第一个例子有什么好处?

1 个答案:

答案 0 :(得分:3)

主要好处是通常在应用程序启动时验证和解析命名查询。这意味着如果出现任何问题,将立即报告,并且应用程序不会启动。

除了验证之外,查询已准备好一次,可以在应用程序的任何位置使用。因此,任何后续使用的命名查询都不会导致任何额外的处理,这有利于提高性能。