PlusPedia wird derzeit technisch modernisiert. Aktuell laufen Wartungsarbeiten. Für etwaige Unannehmlichkeiten bitten wir um Entschuldigung; es sind aber alle Artikel zugänglich und Sie können PlusPedia genauso nutzen wie immer.

Neue User bitte dringend diese Hinweise lesen:

Anmeldung - E-Mail-Adresse Neue Benutzer benötigen ab sofort eine gültige Email-Adresse. Wenn keine Email ankommt, meldet Euch bitte unter NewU25@PlusPedia.de.

Hinweis zur Passwortsicherheit:
Bitte nutzen Sie Ihr PlusPedia-Passwort nur bei PlusPedia.
Wenn Sie Ihr PlusPedia-Passwort andernorts nutzen, ändern Sie es bitte DORT bis unsere Modernisierung abgeschlossen ist.
Überall wo es sensibel, sollte man generell immer unterschiedliche Passworte verwenden! Das gilt hier und im gesamten Internet.
Aus Gründen der Sicherheit (PlusPedia hatte bis 24.07.2025 kein SSL | https://)

Bei PlusPedia sind Sie sicher: – Wir verarbeiten keine personenbezogenen Daten, erlauben umfassend anonyme Mitarbeit und erfüllen die Datenschutz-Grundverordnung (DSGVO) vollumfänglich. Es haftet der Vorsitzende des Trägervereins.

PlusPedia blüht wieder auf als freundliches deutsches Lexikon.
Wir haben auf die neue Version 1.43.3 aktualisiert.
Wir haben SSL aktiviert.
Hier geht es zu den aktuellen Aktuelle Ereignissen

Java Object Oriented Querying

Aus PlusPedia
Zur Navigation springen Zur Suche springen
Java Object Oriented Querying


Basisdaten

Entwickler Lukas Eder

Versionen 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.

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.

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

Siehe auch


Andere Wikipedia Sprachen



Init-Quelle

Entnommen aus der:

Erster Autor: Lukaseder angelegt am 01.12.2010 um 22:08,
Alle Autoren: Levin, Gary Dee, AHZ, Lukaseder


Andere Lexika

  • Dieser Artikel wurde in der Wikipedia gelöscht.