Proljetna čizma s hibernacijom
1. Pregled
U ovom ćemo članku pogledati kako koristiti Spring Boot s Hibernate.
Izgradit ćemo jednostavnu aplikaciju Spring Boot i vidjeti kako je lako integrirati je s Hibernateom.
2. Podizanje aplikacije iz programa
Upotrijebit ćemo Spring Initializr za pokretanje naše aplikacije Spring Boot. U ovom ćemo primjeru koristiti samo potrebne konfiguracije i ovisnosti za integraciju hibernacije, dodajući mreža, JPA, i H2 ovisnosti. Te ćemo ovisnosti objasniti u sljedećem odjeljku.
Generirajmo projekt i otvorimo ga u našem IDE-u. Možemo provjeriti generiranu strukturu projekta i identificirati konfiguracijske datoteke koje će nam trebati.
Ovako će izgledati struktura projekta:
3. Ovisnosti Mavena
Ako se otvorimo pom.xml, vidjet ćemo da jesmo proljeće-boot-starter-web i proljetni-boot-starter-test kao ovisnosti mavena. Kao što njihova imena sugeriraju, ovo su početne ovisnosti u Spring Boot-u.
Kratko ćemo pogledati ovisnost koja povlači JPA:
org.springframework.boot spring-boot-starter-data-jpa
Ova ovisnost uključuje JPA API, JPA implementaciju, JDBC i druge potrebne knjižnice. Budući da je zadana implementacija JPA hibernacija, ta je ovisnost zapravo dovoljna i za to.
Napokon ćemo upotrijebiti H2 kao vrlo lagana baza podataka za ovaj primjer:
com.h2database h2 vrijeme izvođenja
Možemo koristiti H2 konzolu da provjerimo radi li DB i radi korisničkog GUI-a za naš unos podataka. Krenimo i omogućimo to primjena.properiti:
proljeće.h2.console.enabled = true
To je sve što smo trebali konfigurirati da uključuje Hibernate i H2 za naš primjer. Možemo provjeriti je li konfiguracija bila uspješna u zapisnicima kad pokrenemo aplikaciju Spring Boot:
HHH000412: Hibernate Core {#Version}
HHH000206: hibernate.svojstva nisu pronađena
HCANN000001: Bilješke o hibernaciji Commons {#Version}
HHH000400: Korištenje dijalekta: org.hibernate.dialect.H2Dialect
Sada možemo pristupiti H2 konzoli na localhostu: // localhost: 8080 / h2-console /.
4. Stvaranje entiteta
Da bismo provjerili radi li naš H2 ispravno, prvo ćemo stvoriti JPA entitet u novom modeli mapa:
@ Entity public class Book {@Id @GeneratedValue private Long id; privatni naziv niza; // standardni konstruktori // standardni getteri i postavljači}
Sada imamo osnovni entitet, od kojeg H2 može stvoriti tablicu. Ponovno pokretanje aplikacije i provjera H2 konzole, nova tablica pod nazivom Knjiga stvorit će se.
Da bismo dodali neke početne podatke u našu aplikaciju, moramo stvoriti novu SQL datoteku s nekim umetnutim izrazima i staviti je u našu resursi mapu. Možemo koristiti uvoz.sql (Hibernate podrška) ili podaci.sql (Proljetna podrška za JDBC) za učitavanje podataka.
Evo naših primjera podataka:
umetnuti u knjižne vrijednosti (1, 'Tatarska stepa'); umetnuti u knjigovodstvene vrijednosti (2, 'Poem Strip'); umetnuti u knjižne vrijednosti (3, 'Nemirne noći: odabrane priče o Dinu Buzzatiju');
Opet, možemo ponovno pokrenuti aplikaciju Spring Boot i provjeriti H2 konzolu - podaci su sada u Knjiga stol.
5. Izrada spremišta i usluge
Nastavit ćemo s izradom osnovnih komponenata kako bismo testirali našu aplikaciju. Prvo, dodajte JPA Repozitorij u novi spremišta mapa:
@Repository javno sučelje BookRepository proširuje JpaRepository {}
Možemo koristiti JpaRepository sučelje iz Spring framework-a, koje pruža zadanu implementaciju za basic CRUD operacijama.
Dalje, dodajmo BookService u novom usluge mapa:
@Service javna klasa BookService {@Autowired privatni BookRepository bookRepository; javni popis popisa () {return bookRepository.findAll (); }}
Da bismo testirali našu aplikaciju, moramo provjeriti mogu li se stvoreni podaci dohvatiti iz popis() način usluge.
Napisat ćemo sljedeće SpringBootTest:
@RunWith (SpringRunner.class) @SpringBootTest javni razred BookServiceUnitTest {@Autowired privatni BookService bookService; @Test public void whenApplicationStarts_thenHibernateCreatesInitialRecords () {Popis knjiga = bookService.list (); Assert.assertEquals (books.size (), 3); }}
Izvođenjem ovog testa možemo provjeriti da Hibernate kreira Knjiga podatke koje naša usluga uspješno dohvaća. To je bilo to, Hibernate radi s Spring Bootom.
6. Veliko slovo naziva tablice
Ponekad će nam možda trebati da imena tablica u našoj bazi budu napisana velikim slovima. Kao što već znamo, prema zadanim postavkama Hibernate će generirati nazive tablica malim slovima.
Također bismo mogli pokušati izričito postaviti naziv tablice, ovako:
@Entity (name = "BOOK") javna knjiga knjige {// članovi, standardni dostavljači i postavljači}
Međutim, to ne bi uspjelo. Ono što djeluje je postavljanje ovog svojstva u primjena.svojstva:
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
Kao rezultat toga, u svojoj bazi podataka možemo provjeriti jesu li tablice uspješno stvorene velikim slovima.
7. Zaključak
U ovom smo članku pogledali kako je lako integrirati Hibernate s Spring Boot. Koristili smo H2 bazu podataka, kao vrlo lagano rješenje u memoriji.
Dali smo puni primjer aplikacije koja koristi sve ove tehnologije, a na kraju smo dali i mali savjet kako postaviti nazive tablica velikim slovima u našoj bazi podataka.
Kao i uvijek, svi isječci koda spomenuti u ovom članku mogu se naći na našem GitHub spremištu.