2015-11-19 6 views

Antwort

10
  1. Create: Gebrauchte eine JPQL
  2. createNamedQuery zu erstellen: Abfragen verwendet auszuführen nativen/pure SQL Example
: Gebrauchte Abfragen mit Namen in Mapping-Datei oder eine Anmerkung go to this
  • createNativeQuery definieren
  • +0

    tolle Antwort. Danke – Krish

    +0

    außer dass "HQL" nichts mit JPA zu tun hat. JPA verwendet JPQL –

    20
    • Die Create Methode wird verwendet, um dynamische Abfragen zu erstellen, die direkt innerhalb einer Business-Logik definiert sind Abfragen der Anwendung. Beispiel:

      public List findWithName(String name) { 
      return em.createQuery(
      "SELECT c FROM Customer c WHERE c.name LIKE :custName") 
      .setParameter("custName", name) 
      .setMaxResults(10) 
      .getResultList(); 
      } 
      
    • Die createNamedQuery Methode wird verwendet, um statische Anfragen zu erstellen, oder Abfragen, die mithilfe der javax.persistence.NamedQuery Annotation in Metadaten definiert sind. Das name-Element von @NamedQuery gibt den Namen der Abfrage an, die mit der createNamedQuery-Methode verwendet wird. Das Abfrageelement @NamedQuery ist die Abfrage:

      @NamedQuery(
      name="findAllCustomersWithName", 
      query="SELECT c FROM Customer c WHERE c.name LIKE :custName" 
      ) 
      

    Hier ist ein Beispiel von createNamedQuery, die die @NamedQuery verwendet:

    @PersistenceContext 
        public EntityManager em; 
        ... 
        customers = em.createNamedQuery("findAllCustomersWithName") 
        .setParameter("custName", "Smith") 
        .getResultList(); 
    
    • Die createNativeQuery Erstellen Sie eine Instanz von Abfrage zum Ausführen einer systemeigenen SQL-Anweisung.hier sind einige Gründe Wahl createNativeQuery:

      • Low-Level-Zugriff, was bedeutet, dass Sie die Zuordnung selbst optimieren und verarbeiten kann; Mit SQL greifen Sie tatsächlich auf die Datenbanktabelle zu, während Sie mit JPQL auf die Entitätsobjekte zugreifen.
      • Vielleicht möchten Sie nicht JPQL lernen, wenn Sie bereits SQL wissen
      • Sie haben bereits die Abfragen in SQL geschrieben und haben keine Ressourcen/Zeit zu portieren

    JPQL Für weitere Informationen besuchen Sie diese Links:

    Creating Queries Using the Java Persistence Query Language

    JPA why use createNamedQuery

    Why do we need to create native query?

    +0

    Ich bin schon durch diese Links aber nicht in der Lage zu verstehen. Also diese Frage gepostet. – Krish

    +0

    Während diese Links theoretisch die Frage beantworten können, [wäre es vorzuziehen] (// meta.stackoverflow.com/q/8259), hier die wesentlichen Teile der Antwort aufzunehmen und die Links als Referenz zur Verfügung zu stellen. Sonst wäre ein Kommentar ausreichend. –

    +0

    @TobiasLiefke Vielen Dank für Ihren Rat, ich aktualisierte meine Antwort –

    0

    CreateQuery wird verwendet, um eine JPQL-Abfragen

    zu erstellen

    createNamedQuery wird verwendet Abfragen mit Namen in Zuordnungsdatei oder Annotation, Beispiel zu definieren: obj.createNamedQuery("entity.findbycode",Something.class)

    createNativeQuery verwendet wird nativer/pure SQL-Abfragen auszuführen.

    Verwandte Themen