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
- 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(); }
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 }
Like Operator
findAllCustomerLike() { select * from Customer where city like "%L" }
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" }