Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

RapidClipse bietet mit dem JPA-SQL Editor ein mächtiges Tool für die Formulierung Ihrer Datenbankabfragen. JPA-SQL ist eine domänenspezifische Sprache (DSL). Die Syntax lehnt sich an SQL an und ist somit leicht erlernbar. In JPA-SQL formulierte Abfragen werden nicht direkt an eine Datenbank versendet, sondern in Javacode umgewandelt, der auf der JPA Criteria API basiert. Erst zur Laufzeit werden die nativen SQL-Statements passend für die entsprechend angebundene Datenbank von Hibernate (oder einem anderen JPA-Provider Ihrer Wahl) dynamisch erzeugt und an die Datenbank versendet. JPA-SQL kombiniert somit die Einfachheit von SQL mit den zahlreichen Vorteilen der als sehr komplex geltenden JPA Criteria API. 

Vorteile von JPA-SQL im Vergleich zur Verwendung von SQL-Strings:

  • Übersichtlichere Codestruktur
  • Typsicher
  • Beliebige Reihenfolge der Statements
  • IDE-Unterstützung
    • Code Completion - Erkennung von Schlüsselwörter, Operatoren und Entities 
    • Syntax-Highlighting
    • Code-Folding
    • Formatter

    • Inline Refactoring and Refactoring Participants for JDT Member Renames and Moves

    • Hovers

    • Linking (Ctrl+Click)

    • Outline View

    • Error/Warning-Markers with Quick Fixes

    • Code Templates

    • Integration in Eclipse build process

    • debuggbar (generierter JPA Criteria Code)
  • Query-Methode im DAO wird automatisch generiert
  • Datenbankunabhängig

Vorteile von JPA-SQL im Vergleich zur direkten Verwendung der JPA Criteria API:

  • SQL-ähnliche Syntax und Codestruktur
  • Deutlich geringere Komplexität
  • Übersichtlicherer Code
  • Leicht erlernbar


  1. Klicken Sie im Project Management > Data Access das DAO an, über das Sie eine Datenbankabfrage durchführen möchten, z.B. CustomerDAO.java.
  2. Drücken Sie Strg + Shift und wählen Sie in der folgenden Autovervollständigung query - create new query aus.
  3. Geben Sie bei der generierten Methode einen geeigneten Methodennamen an, z.B. findAllCustomer.

    findAllCustomer()
    {
    	select * from 
    }
  4. Geben Sie nach dem Schlüsselwort from > C ein, drücken Sie Strg + Shift und wählen Sie Customer aus.
  5. Klicken Sie auf Speichern.


Ergebnis:
  • Queries - JPA-SQL Code.

    import com.company.test.entities.Customer
    
    findAllCustomer()
    {
    	select * from Customer
    }
  • Java - Generierte Java Code auf Basis der JPA Criteria API. Zu der Query-Methode werden auch die notwendigen Imports generiert. 

    /**
     * @queryMethod Do not edit, method is generated by editor!
     */
    public List<Customer> findAllCustomer() {
    	EntityManager entityManager = em();
    
    	CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
    
    	CriteriaQuery<Customer> criteriaQuery = criteriaBuilder.createQuery(Customer.class);
    
    	Root<Customer> root = criteriaQuery.from(Customer.class);
    
    	TypedQuery<Customer> query = entityManager.createQuery(criteriaQuery);
    	return query.getResultList();
    }
Examples:
  • Find all 

    findAllCustomer()
    {
    	select * from Customer
    }
    

    Alternativ erlaubte Schreibweise:

    findAllCustomer()
    {
    	from Customer
    }
  • Where Condition

    findAllCustomerWhere()
    {
    	select * from Customer where city = "London"
    }
  • Where Condition mit Parameter

    findAllCustomerWhere(String city)
    {
    	select * from Customer where city = :city
    }

    Als Parameter können auch Objekte übergeben werden:

    findAllCustomerWhere(Customer customer)
    {
    	select * from Customer where customer = :customer
    }
  • Like Operator

    findAllCustomerLike()
    {
    	select * from Customer where city like "%L"
    }
  • Concat Funktion

    findAllCustomerLike(String city)
    {
    	select * from Customer where city like concat("%", :city)
    }
  • Rückgabe bestimmter Spalten

    findAllCustomerColumn()
    {
    	select customerid, city, address from Customer
    }
  • asdfasf
Hinweis:
  • JPA-SQL Funktionsumfang - JPA-SQL wurde entwickelt, um den Einsatz der JPA Criteria API zu vereinfachen. Der Funktionsumfang von JPA-SQL ist dadurch auf den Funktionsumfang der JPA Criteria API begrenzt.
  • Generierten Code editieren - Die Generierung des Java JPA Criteria Codes erfolgt unidirektional. D.h., Änderungen dürfen nur im JPA-SQL Code vorgenommen werden. Der generierte Java JPA Criteria Code darf nicht editiert werden.
  • Mehrere Query-Methoden - In einer DAO Klasse können sich beliebig viele Query-Methoden befinden.

    import com.company.test.entities.Customer
    findAllCustomer()
    {
    	select * from Customer 
    }
    
    
    findCustomerByID()
    {
    	select * from Customer where customerid = "BOLID"
    }

JPA-SQL Sprach-Spezifikation

  • No labels