Interogare orientată pe obiecte Java
Acest articol sau secțiune despre subiectul software nu menționează sursele necesare sau cei prezenți sunt insuficienți . |
jOOQ software | |
---|---|
Tip | Cartografiere obiect-relațională ( nelistată ) |
Dezvoltator | Data Geekery GmbH |
Sistem de operare | Multiplatform |
Limba | Java |
Licență | Apache și licență comercială ( licență gratuită ) |
Site-ul web | www.jooq.org |
Interogarea orientată pe obiecte Java , cunoscută în mod obișnuit sub numele de jOOQ , este o bibliotecă software ușoară de cartografiere a bazelor de date din Java care implementează modelul de înregistrare activ. Scopul său este să fie atât relațional, cât și orientat obiect, oferind un limbaj specific domeniului pentru a construi interogări din clase generate de o schemă de baze de date .
Paradigmă
jOOQ necesită ca SQL să fie primul pe orice integrare a bazei de date. În consecință, nu introduce un nou limbaj de interogare a textului, ci mai degrabă permite construirea SQL pur din obiecte și cod jOOQ generat dintr-o schemă de baze de date. jOOQ folosește JDBC pentru a apela interogări SQL subiacente.
Deși oferă o abstracție JDBC, jOOQ nu are la fel de multe caracteristici și complexitate ca bibliotecile de cartografiere relaționale obiecte standard precum Hibernate și JPA .
Apropierea jOOQ de SQL are avantaje față de bibliotecile tipice de cartografiere relațională a obiectelor. SQL are multe caracteristici care nu pot fi utilizate într-o paradigmă de programare orientată pe obiecte ; acest set de diferențe este cunoscut sub numele de nepotrivire impedanță obiect-relațională . Fiind aproape de SQL, jOOQ ajută la prevenirea erorilor sintactice și a problemelor de tip mapare. De asemenea, are grijă de variabila de legare. De asemenea, în jOOQ este posibil să creați interogări foarte complexe, care implică aliasing , îmbinări, selecții imbricate și îmbinări complexe. JOOQ acceptă, de asemenea, funcții specifice bazei de date, cum ar fi tipurile definite de utilizator, tipurile de enumere, procedurile stocate și funcțiile native.
Exemplu
O interogare imbricată care selectează dintr-un tabel alias:
- Selectați autori cu cărți terminate
SELECT * DE LA AUTOR a
UNDE EXISTĂ ( SELECT 1
DIN CARTE
UNDE REZERVĂ . STATUS = 'VANDUT'
ȘI CARTEA . AUTHOR_ID = a . ID );
Și echivalentul său în DSL jOOQ:
// Utilizați tabelul alias în comanda select
crea . selectațiDin ( tabel ( "AUTOR" ). ca ( "a" ))
. unde ( există ( selectOne ()
. din ( tabel ( „CARTEA” ))
. unde ( câmp ( "BOOK.STATUS" ). egal ( câmp ( "BOOK_STATUS.SOLD_OUT" )))
. și ( câmp ( "BOOK.AUTHOR_ID" ). egal ( câmp ( "AUTHOR.ID" ))))));
Sau mai simplu, folosind codul generat din metadatele bazei de date care generează constante:
// Utilizați tabelul aliased în instrucțiunea select
Autor final a = AUTOR . ca ( „a” );
crea . selectați din ( a )
. unde ( există ( selectOne ()
. din ( CARTE )
. unde ( BOOK . STATUS . egal ( BOOK_STATUS . SOLD_OUT ))
. și ( BOOK . AUTHOR_ID . egal ( a . ID )))));
linkuri externe
- Site oficial , pe jooq.org .