Java Object Oriented Querying
{{#invoke:WLink|getArticleBase}}
| |
---|---|
Basisdaten
| |
Entwickler | Lukas Eder
|
Aktuelle Version | 1.5.0 (22. November 2010)
|
Betriebssystem | plattformübergreifend
|
Programmiersprache | Java
|
Kategorie | Persistenz-Framework
|
Lizenz | Apache License 2.0
|
http://jooq.sourceforge.net |
jOOQ bedeutet Java Object Oriented Querying. Es handelt sich um eine objekt-relationale Bibliothek in Java. jOOQ ist sowohl relational wie auch objektorientiert und bietet mit seiner Domain Specific Language Möglichkeiten, um Datenbankabfragen aus generierten Klassen zu konstruieren.
Inhaltsverzeichnis
Übrigens: Die PlusPedia ist NICHT die Wikipedia. Wir sind ein gemeinnütziger Verein, PlusPedia ist werbefrei. Wir freuen uns daher über eine kleine Spende! |
1 Paradigma
Die wichtigste Idee hinter jOOQ ist, dass SQL in jeder Datenbankintegration an erster Stelle stehen soll. Trotz der angebotenen Abstraktion von JDBC hat es nicht soviel Funktionalität und Komplexität wie Hibernate oder JPA oder ähnliche OR-mapping Produkte. jOOQ versteht sich als Kompromiss zwischen den beiden Welten. SQL hat viele Eigenschaften, welche in einem objektorienterten Programmierparadigma keinen Platz haben. Dies ist ein großer Nachteil des objekt-relationalen Modells.
Mit jOOQ wird keine neue textuelle Abfragesprache eingeführt. Stattdessen kann gewöhnliches SQL mittels jOOQ Objekten und generiertem Code konstruiert werden. Dies verhindert Syntaxfehler und Probleme mit Datentypen. Des weiteren werden Variablen gebunden. Ohne die Limitierungen, welche durch OR-mapping entstehen würden, ist es auch möglich komplexe Abfragen mit Alias, Unions, verschachtelten Abfragen, komplexen Joins zu formulieren. Außerdem unterstützt jOOQ auch datenbankspezifische Eigenschaften, wie UDTs, enumerierte Typen, Stored Procedures und native Funktionen.
2 Beispiel
Eine verschachtelte Abfrage welche von einem Tabellenalias selektiert.
-- Alle Autoren, deren Bücher ausverkauft sind
SELECT *
FROM T_AUTHOR a
WHERE EXISTS (SELECT 1
FROM T_BOOK
WHERE T_BOOK.STATUS = 'SOLD OUT'
AND T_BOOK.AUTHOR_ID = a.ID);
Äquivalent in jOOQ DSL:
// Erstellen eines Alias für die Autorentabelle
Table<TAuthorRecord> a = T_AUTHOR.as("a");
// Den Tabellenalias im Select Statement verwenden
create.selectFrom(a)
.where(create.exists(create.select(create.constant(1))
.from(T_BOOK)
.where(TBook.STATUS.equal(TBookStatus.SOLD_OUT)
.and(TBook.AUTHOR_ID.equal(a.getField(TAuthor.ID))))));
Siehe auch jOOQ Beispiele (englisch) für viele weitere Beispiele
3 Siehe auch
4 Andere Wikipedia Sprachen
5 Init-Quelle
Entnommen aus der:
Erster Autor: Lukaseder angelegt am 01.12.2010 um 22:08,
Alle Autoren: Levin, Gary Dee, AHZ, Lukaseder
6 Andere Lexika
- Dieser Artikel wurde in der Wikipedia gelöscht.
Hast du einen Löschwunsch oder ein anderes Anliegen? Dann nutze bitte unser Kontaktformular
PlusPedia Impressum
Bitte Beachte:
Sämtliche Aussagen auf dieser Seite sind ohne Gewähr.
Für die Richtigkeit der Aussagen übernimmt die Betreiberin keine Verantwortung.
Nach Kenntnissnahme von Fehlern und Rechtsverstößens ist die Betreiberin selbstverständlich bereit,
diese zu beheben.
Verantwortlich für jede einzelne Aussage ist der jeweilige Erstautor dieser Aussage.
Mit dem Ergänzen und Weiterschreiben eines Artikels durch einen anderen Autor
werden die vorhergehenden Aussagen und Inhalte nicht zu eigenen.
Die Weiternutzung und Glaubhaftigkeit der Inhalte ist selbst gegenzurecherchieren.