Object-relational Mapping folosind JPA, Hibernate si Spring Data JPA. Persistence cu JPA

Persistenta cu JPA

Aplicatie JPA

Persistence unit

  • Din moment ce JPA este doar o specificatie, trebuie sa indicam implementarea vendor-specific PersistenceProvider a API-ului. Persistenta pe care o vom defini va fi sustinuta de catre un provider Hibernate. #1
  • Indicam proprietatile-driver JDBC #2, URL-ul bazei de date #3, username #4, si parola #5 pentru a-l accesa. Masina pe care rulam programele are MySQL 8 instalat si credentialele de acces sunt cele din persistence.xml.
  • Dialectul Hibernate este MySQL8 #6, deoarece baza de date cu care interactionam este MySQL Release 8.0.
  • De fiecare data cand programul este executat, baza de date va fi creata de la zero #7. Acest lucru este ideal pentru testarea automata cand vrem sa lucram cu o baza de date curata pentru fiecare test run.

Persistent class

  • Clasele persistente au nevoie de adnotarea @Entity #1, pentru a indica ca ele corespund unui tabel dintr-o baza de date. Daca nu este specificat un nume de tabel, aceasta clasa va fi mapata in mod default pe un tabel denumit ITEM.
  • Clasele persistente au nevoie de un atribut adnotat cu @Id #2, pentru a corespunde cheii primare a tabelului din baza de date. Acest atribut va fi mapat pe o coloana denumita ID.
  • Adnotarea @GeneratedValue indica generarea automata a cheilor primare #3. Pot sa fie folosite multe strategii aici, in functie de baza de date: campuri identitare, valori obtinute dintr-o secventa sau un tabel.
  • Atributele vor fi mapate pe coloanele din tabel. Din moment ce nu este specificat un nume de coloana, informatia legata de atribute #4 va fi mapata default pe o coloana numita INFO.
  • Avem nevoie de EntityManagerFactory pentru a accesa baza de date #1. Corespunde persistence unit pe care am definit-o anterior.
  • Cream un EntityManager si vom incepe o noua sesiune cu o baza de date #2.
  • Obtinem accesul la standard transaction API si incepem o tranzactie #3.
  • Cream o noua instanta a Item class, si setam informatiile legate de proprietate #4.
  • Transient instance devine persistenta de partea persistence context #5.
  • Angajarea tranzactiei #6. Un camp nou este inserat in tabelul ITEM. Accesul la baza de date trebuie sa fie tranzactional, chiar daca este read-only.
  • Pe masura ce cream EntityManager, trebuie sa il inchidem #7.
  • Pe masura ce am creat EntityManagerFactory, trebuie sa o inchidem #8.
  • Nu exista cod SQL si utilizare JDBC in aplicatia JPA. Nu exista operatiuni CRUD (create, read, update, delete) in codul Java, lucram doar in modul object-oriented, cu clase, obiecte, si metode. Traducerea in fiecare dialect SQL este facuta prin ORM, lucru care adreseza si portabilitatea.

--

--

--

https://www.luxoft-training.com/

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Luxoft Training

Luxoft Training

https://www.luxoft-training.com/

More from Medium

Writing a Logging Aspect with Spring AOP

[BDD] — Behaviour Driven Development with Java and Cucumber

Reflection API

Reentrant lock in Java.