Timeline
Chat
Prospettiva

Java Object Oriented Quering

Da Wikipedia, l'enciclopedia libera

Remove ads

Java Object Oriented Quering, comunemente conosciuto come jOOQ, è una libreria software leggera per il database-mapping in Java che implementa il pattern active record. Il suo scopo è essere sia relazionale che orientato agli oggetti fornendo un linguaggio specifico di dominio per costruire query da classi generate da uno schema di database.

Fatti in breve jOOQ software, Genere ...
Remove ads

Paradigma

jOOQ richiede che l'SQL debba venire prima in qualsiasi integrazione di database. Di conseguenza, non introduce un nuovo linguaggio di interrogazione testuale, ma piuttosto consente la costruzione di SQL puro da oggetti e codice jOOQ generato da uno schema di database. jOOQ usa JDBC per chiamare le sottostanti query SQL.

Sebbene dia un'astrazione su JDBC, jOOQ non ha altrettanti funzionalità e complessità come le librerie object-relational mapping standard come Hibernate e JPA.

La vicinanza di jOOQ a SQL ha dei vantaggi rispetto alle librerie tipiche di object-relational mapping. SQL ha molte caratteristiche che non possono essere usate in un paradigma di programmazione orientato agli oggetti; questo insieme di differenze è conosciuto come object-relational impedance mismatch. Essendo vicino a SQL, jOOQ aiuta a prevenire errori sintattici e problemi di tipo mappatura. Inoltre, si prende cura della variabile di binding. Inoltre in jOOQ è possibile creare query molto complesse, che coinvolgono aliasing, unioni, selezioni nidificate e join complessi. Anche jOOQ supporta caratteristiche specifiche di database, come tipi user-defined, tipi enum, stored procedure e funzioni native.

Remove ads

Esempio

Una query nidificata che seleziona da una tabella alias:

  -- Seleziona gli autori con libri che sono terminati
  SELECT * FROM AUTHOR a
        WHERE EXISTS (SELECT 1
                   FROM BOOK
                  WHERE BOOK.STATUS = 'SOLD OUT'
                    AND BOOK.AUTHOR_ID = a.ID);

E il suo equivalente in DSL jOOQ:

  // Usa la tabella alias nel comando select
  create.selectFrom(table("AUTHOR").as("a"))
        .where(exists(selectOne()
                     .from(table("BOOK"))
                     .where(field("BOOK.STATUS").equal(field("BOOK_STATUS.SOLD_OUT")))
                     .and(field("BOOK.AUTHOR_ID").equal(field("AUTHOR.ID")))));

O più semplicemente, usando codice generato dai metadati del database che genera costanti:

  // Use the aliased table in the select statement
  final Author a = AUTHOR.as("a");

  create.selectFrom(a)
        .where(exists(selectOne()
                     .from(BOOK)
                     .where(BOOK.STATUS.equal(BOOK_STATUS.SOLD_OUT))
                     .and(BOOK.AUTHOR_ID.equal(a.ID))));
Remove ads

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads