RapidClipse bietet mit dem JPA-SQL Editor ein mächtiges Tool für die Erstellung von benutzerdefinierten Abfragen auf Basis von JPA. Die Syntax von JPA-SQL lehnt sich an SQL an und ist somit leicht erlernbar. JPA-SQL ist eine reine Metasprache. D.h., die in JPA-SQL formulierten Abfragen werden nicht direkt an eine Datenbank versendet, sondern in Javacode auf Basis der JPA Criteria API umgewandelt. Erst zur Laufzeit werden die nativen SQL-Statements passend für die entsprechend angebundene Datenbank erzeugt und abgesetzt.
Vorteile im Vergleich zur Verwendung von plain SQL-Strings:
- SQL-ähnliche Syntax und Codestruktur
- Übersichtlicher
- Typsicher
- Beliebige Reihenfolge der Statements
- IDE-Unterstützung
- Autovervollständigung - Erkennung von Schlüsselwörter, Operatoren und Entities
- Syntax-Highlighting
- Refactoring
- debuggbar (generierter JPA Criteria Code)
- Query-Methode im DAO wird automatisch generiert
- Datenbankunabhängig
Vorteile im Vergleich zur direkten Verwendung der JPA Criteria API:
- SQL-ähnliche Syntax und Codestruktur
- Übersichtlicher
- Deutlich geringere Komplexität
- Leicht erlernbar
- Klicken Sie im Project Management > Data Access das DAO an, über das Sie eine Datenbankabfrage durchführen möchten, z.B. CustomerDAO.java.
- Drücken Sie Strg + Shift und wählen Sie in der folgenden Autovervollständigung query - create new query aus.
Geben Sie bei der generierten Methode einen geeigneten Methodennamen an, z.B. findAllCustomer.
findAllCustomer() { select * from }
- Geben Sie nach dem Schlüsselwort from > C ein, drücken Sie Strg + Shift und wählen Sie Customer aus.
- Klicken Sie auf Speichern.
Ergebnis:
Queries
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(); }
Hinweis:
- 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" }