Java Object Oriented Quering: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
disorfanizzo
 
(5 versioni intermedie di 4 utenti non mostrate)
Riga 1:
{{F|software|luglio 2017}}
{{Software
|Nome = jOOQ
Riga 14 ⟶ 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:
<sourcesyntaxhighlight lang="sql">
-- Seleziona gli autori con libri che sono terminati
SELECT * FROM AUTHOR a
Riga 25 ⟶ 26:
WHERE BOOK.STATUS = 'SOLD OUT'
AND BOOK.AUTHOR_ID = a.ID);
</syntaxhighlight>
</source>
 
E il suo equivalente in DSL jOOQ:
<sourcesyntaxhighlight lang="java">
// Usa la tabella alias nel comando select
create.selectFrom(table("AUTHOR").as("a"))
Riga 35 ⟶ 36:
.where(field("BOOK.STATUS").equal(field("BOOK_STATUS.SOLD_OUT")))
.and(field("BOOK.AUTHOR_ID").equal(field("AUTHOR.ID")))));
</syntaxhighlight>
</source>
 
O più semplicemente, usando codice generato dai [[metadati]] del database che genera costanti:
<sourcesyntaxhighlight lang="java">
// Use the aliased table in the select statement
final Author a = AUTHOR.as("a");
Riga 47 ⟶ 48:
.where(BOOK.STATUS.equal(BOOK_STATUS.SOLD_OUT))
.and(BOOK.AUTHOR_ID.equal(a.ID))));
</syntaxhighlight>
</source>
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
 
{{Portale|informatica}}