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.