Datenbankzugriffe können direkt in SQL (natives SQL Statement) in Form von SQL-Strings übergeben werden. Auf Grund der zahlreichen Nachteile von SQL-Strings sollten diese nur in Ausnahmefällen verwendet werden. Mit JPA-SQL bietet RapidClipse eine elegante Alternative zur Verwendung von SQL-Strings.
Examples:
Abfrage einer Tabelle - Liefert alle Datensätze zurück.
Code Block language java theme Confluence public List<Customer> getAllCustomerNativeSQL() { String SQL = "SELECT * FROM CUSTOMER"; Query nativeQuery = em().createNativeQuery(SQL, Customer.class); List<Customer> resultList = nativeQuery.getResultList(); return resultList; }
Abfrage mit Parameter
Code Block language java theme Confluence public List<Customer> getCustomersByFirstAndLastname(String lastname, String firstname) { String SQL = "SELECT * FROM CUSTOMER WHERE Lastname LIKE ? AND Firstname LIKE ?"; Query nativeQuery = em().createNativeQuery(SQL, Customer.class); nativeQuery.setParameter(1, lastname); nativeQuery.setParameter(2, firstname); List<Customer> resultList = nativeQuery.getResultList(); return resultList; }
Datensatz über die ID suchen
Code Block language java theme Confluence public Customer getCustomersByID(Integer ID) { String SQL = "SELECT * FROM CUSTOMER WHERE ID = ?"; Query nativeQuery = em().createNativeQuery(SQL, Customer.class); nativeQuery.setParameter(1, ID); Customer singleResult = (Customer) nativeQuery.getSingleResult(); return singleResult; }
Hinweis:
- Nachteile Vorteile von SQL-Strings -
- Absetzen beliebiger, auch proprietärer SQL-Statements möglich
- Anfangs einfacher als Java Query APIs, z.B. JPA Criteria API
- Nachteile von SQL-Strings
- Unübersichtlicher Code, insbesondere bei umfangreichen Queries.
- Nicht typsicher
- Keine 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
- Gefahr von SQL-Injection
- Debuggen des SQL-Codes nicht möglich
- Fehler können erst zur Laufzeit bemerkt werden
- Datenbankspezifisch