Java Object Oriented Quering: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
B3t (discussione | contributi) NEW |
disorfanizzo |
||
(8 versioni intermedie di 6 utenti non mostrate) | |||
Riga 1:
{{F|software|luglio 2017}}
{{Software
|Nome = jOOQ
|Sviluppatore = Data Geekery GmbH
|SistemaOperativo = Multipiattaforma
|Genere = Object-relational mapping
|Licenza = [[Licenza Apache]] e commerciale
}}
Riga 16 ⟶ 15:
Sebbene dia un'astrazione su JDBC, jOOQ non ha altrettanti funzionalità e complessità come le librerie [[object-relational mapping]] standard come [[Hibernate]] e [[Java Persistence API|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 [[Errore di sintassi|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 (programmazione)|aliasing]], unioni, selezioni nidificate e [[join (SQL)|join]] complessi. Anche jOOQ supporta caratteristiche specifiche di database, come tipi user-defined, tipi enum, stored procedure e funzioni native.
== Esempio ==
Una query nidificata che seleziona da una tabella alias:
<
-- Seleziona gli autori con libri che sono terminati
SELECT * FROM AUTHOR a
Riga 27 ⟶ 26:
WHERE BOOK.STATUS = 'SOLD OUT'
AND BOOK.AUTHOR_ID = a.ID);
</syntaxhighlight>
E il suo equivalente in DSL jOOQ:
<
// Usa la tabella alias nel comando select
create.selectFrom(table("AUTHOR").as("a"))
Riga 37 ⟶ 36:
.where(field("BOOK.STATUS").equal(field("BOOK_STATUS.SOLD_OUT")))
.and(field("BOOK.AUTHOR_ID").equal(field("AUTHOR.ID")))));
</syntaxhighlight>
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");
Riga 49 ⟶ 48:
.where(BOOK.STATUS.equal(BOOK_STATUS.SOLD_OUT))
.and(BOOK.AUTHOR_ID.equal(a.ID))));
</syntaxhighlight>
== Collegamenti esterni ==
* {{Collegamenti esterni}}
{{Portale|informatica}}
|