Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:laborator02 [2015/11/04 01:34] Andrei Roșu-Cojocaru [Soluții] |
laboratoare:laborator02 [2015/11/04 12:15] (current) Andrei Roșu-Cojocaru |
||
|---|---|---|---|
| Line 779: | Line 779: | ||
| Operațiile de comparare sunt realizate asupra valorilor la nivel de obiecte Java și nu asupra modului în care acestea sunt reprezentate în sursa de date. Din acest motiv, în clasele de tip entitate trebuie să se utilizeze tipuri de date derivate din ''Object'' care pot avea valoarea ''NULL'' și nu tipuri de date primitive care nu au această proprietate. | Operațiile de comparare sunt realizate asupra valorilor la nivel de obiecte Java și nu asupra modului în care acestea sunt reprezentate în sursa de date. Din acest motiv, în clasele de tip entitate trebuie să se utilizeze tipuri de date derivate din ''Object'' care pot avea valoarea ''NULL'' și nu tipuri de date primitive care nu au această proprietate. | ||
| + | |||
| + | <html> | ||
| + | <center> | ||
| + | </html> | ||
| ^ **TEST CONDIȚIONAL** ^ **T**rue ^ **F**alse ^ **U**nknown ^ | ^ **TEST CONDIȚIONAL** ^ **T**rue ^ **F**alse ^ **U**nknown ^ | ||
| Line 784: | Line 788: | ||
| | ''IS FALSE'' | False | True | False | | | ''IS FALSE'' | False | True | False | | ||
| | expresia este necunoscută | False | False | False | | | expresia este necunoscută | False | False | False | | ||
| + | |||
| + | <html> | ||
| + | </center> | ||
| + | </html> | ||
| **4**. **GROUP BY**: grupează valorile furnizate conform unor criterii bazate pe un set de proprietăți; | **4**. **GROUP BY**: grupează valorile furnizate conform unor criterii bazate pe un set de proprietăți; | ||
| Line 1095: | Line 1103: | ||
| ==== Eclipse Mars (4.5) ==== | ==== Eclipse Mars (4.5) ==== | ||
| - | TODO | + | În mediul integrat de dezvoltare Eclipse, activarea JPA se face din meniul contextual (accesibil prin click dreapta pe denumirea sa, în //Package Explorer//) al proiectului, în care pot fi configurate proprietățile acestuia. |
| - | ==== Netbeans 8.0.2 ==== | + | În secțiunea //Project Facets// se bifează opțiunea //JPA//. Tot aici poate fi vizualizată și versiunea curentă a acestei interfețe de programare a aplicațiilor. |
| - | TODO | + | {{ :laboratoare:laborator02:eclipse01.png?nolink&700 }} |
| + | |||
| + | În secțiunea //JPA//, pot fi controlate următoarele proprietăți: | ||
| + | * furnizorul JPA (în cazul de față, Hibernate, acesta fiind configurat din fișierul ''persistence.xml'', dacă nu există o astfel de valoare în lista de opțiuni, lăsându-se valoarea implicită //Generic 2.1//) precum și versiunea curentă a interfeței de programare a aplicațiilor; | ||
| + | * biblioteca ce oferă funcționalitatea referitoare la accesul la date (se poate alege valoarea //Disable Library Configuration// în situația în care se folosește un sistem de tip Maven); | ||
| + | * conexiunea la baza de date (acesta poate fi de asemenea configurat în fișierul ''persistence.xml''); | ||
| + | * mecanismul prin care sunt gestionate clasele persistente (descoperire automată pe baza adnotărilor, respectiv precizarea lor în fișierul ''persistence.xml''); | ||
| + | * locația la care pot fi accesate clasele metamodel. | ||
| + | |||
| + | {{ :laboratoare:laborator02:eclipse02.png?nolink&700 }} | ||
| + | |||
| + | ==== NetBeans 8.0.2 ==== | ||
| + | |||
| + | În mediul integrat de dezvoltare NetBeans, nu este necesară activarea JPA, acest lucru realizându-se în momentul în care este detectat fișierul ''persistence.xml'' în directorul ''resources/META-INF'' din codul sursă. | ||
| + | |||
| + | {{ :laboratoare:laborator02:netbeans01.png?nolink }} | ||
| + | |||
| + | Acesta poate fi editat atât în mod vizual (//Design//) cât și în mod text (//Source//). | ||
| + | |||
| + | Pot fi configurate: | ||
| + | * denumirea unității de persistență; | ||
| + | * biblioteca ce asigură funcționalitatea de acces la date; | ||
| + | * URL-ul pentru asigurarea conexiunii la baza de date; | ||
| + | * strategia de generare a tabelelor (//Create//, //Drop and Create//, //None//); | ||
| + | * strategia de validare (//Auto//, //Callback//, //None//); | ||
| + | * mecanismul de gestiune a zonei de memorie tampon partajate (//All//, //None//, //Enable Selective//, //Disable Selective//, //Unspecified//); | ||
| + | * clasele entitate care vor fi gestionate (pentru acestea, se indică calea lor completă, inclusiv pachetul din care fac parte). | ||
| + | |||
| + | {{ :laboratoare:laborator02:netbeans02.png?nolink&700 }} | ||
| ===== Activitate de Laborator ===== | ===== Activitate de Laborator ===== | ||
| Line 1199: | Line 1235: | ||
| <spoiler|Indicații de Rezolvare> | <spoiler|Indicații de Rezolvare> | ||
| Se indentifică acele formate de prezentare ale cărților pentru care stocul nu întrunește cantitatea minimă, acestea fiind ordonate în funcție de editură. Sortarea în funcție de mai multe criterii se realizează folosind o listă de obiecte de tip [[https://docs.oracle.com/javaee/7/api/javax/persistence/criteria/Order.html|javax.persistence.criteria.Order]]. Accesul la identificatorul editurii se face prin intermediul unui obiect ''Join<Collection, PublishingHouse>'' obținut pe baza operației de asociere (prin intermediul metodei ''join()'') ce pornește de la un obiect de tipul ''BookPresentation''. | Se indentifică acele formate de prezentare ale cărților pentru care stocul nu întrunește cantitatea minimă, acestea fiind ordonate în funcție de editură. Sortarea în funcție de mai multe criterii se realizează folosind o listă de obiecte de tip [[https://docs.oracle.com/javaee/7/api/javax/persistence/criteria/Order.html|javax.persistence.criteria.Order]]. Accesul la identificatorul editurii se face prin intermediul unui obiect ''Join<Collection, PublishingHouse>'' obținut pe baza operației de asociere (prin intermediul metodei ''join()'') ce pornește de la un obiect de tipul ''BookPresentation''. | ||
| - | |||
| Se parcurge această listă, creându-se o comandă de aprovizionare atunci când se întâlnește o editură nouă. O entitate corespunzătoare va fi stocată pentru fiecare volum în parte, cantitatea fiind determinată ca diferență între pragul minim și valoarea aflată în stoc. Pentru stocarea unei valori în baza de date se va utiliza metoda ''create()'' din clasele specifice, derivate din ''PersistentEntityManager'', pentru tipurile de date corespunzătoare (''SupplyOrderHeader'', respectiv ''SupplyOrderLine''). | Se parcurge această listă, creându-se o comandă de aprovizionare atunci când se întâlnește o editură nouă. O entitate corespunzătoare va fi stocată pentru fiecare volum în parte, cantitatea fiind determinată ca diferență între pragul minim și valoarea aflată în stoc. Pentru stocarea unei valori în baza de date se va utiliza metoda ''create()'' din clasele specifice, derivate din ''PersistentEntityManager'', pentru tipurile de date corespunzătoare (''SupplyOrderHeader'', respectiv ''SupplyOrderLine''). | ||
| - | |||
| Pentru generarea unui număr de identificare se poate utiliza metoda statică ''generateIdentificationNumber()'' din clasa ''Utilities'' pentru care se specifică stuctura: numărul de caractere de tip literă, respectiv numărul de caractere de tip cifră. | Pentru generarea unui număr de identificare se poate utiliza metoda statică ''generateIdentificationNumber()'' din clasa ''Utilities'' pentru care se specifică stuctura: numărul de caractere de tip literă, respectiv numărul de caractere de tip cifră. | ||
| - | |||
| Lista înregistrărilor stocate se poate determina pe baza datei la care acestea au fost emise (data curentă). | Lista înregistrărilor stocate se poate determina pe baza datei la care acestea au fost emise (data curentă). | ||
| Line 1229: | Line 1262: | ||
| <spoiler|Indicații de Rezolvare> | <spoiler|Indicații de Rezolvare> | ||
| Se determină cărțile pentru care suma stocurilor corespunzătoare diferitelor tipuri de prezentări întrunește condiția specificată. | Se determină cărțile pentru care suma stocurilor corespunzătoare diferitelor tipuri de prezentări întrunește condiția specificată. | ||
| - | |||
| Pentru fiecare carte în parte se determină informațiile solicitate. Datele precum formatul și limba vor fi obținute unei interogări adiționale prin care se realizează asocierea dintre entitățile ''Book'' și ''BookPresentation''. | Pentru fiecare carte în parte se determină informațiile solicitate. Datele precum formatul și limba vor fi obținute unei interogări adiționale prin care se realizează asocierea dintre entitățile ''Book'' și ''BookPresentation''. | ||
| </spoiler> | </spoiler> | ||
