Integriranje Spring Boota s HSQLDB

1. Pregled

Spring Boot olakšava rad s različitim sustavima baza podataka, bez muke s ručnim upravljanjem ovisnostima.

Točnije, Spring Data JPA starter pruža svu funkcionalnost potrebnu za besprijekornu integraciju s nekoliko njih Izvor podataka implementacije.

U ovom vodiču, naučit ćemo kako integrirati Spring Boot s HSQLDB.

2. Ovisnosti Mavena

Da biste pokazali kako je jednostavno integrirati Spring Boot s HSQLDB, stvorit ćemo jednostavan sloj JPA spremišta koji izvodi CRUD operacije na entitetima kupaca koristeći HSQLDB bazu podataka u memoriji.

Evo pokretača Spring Boot koji ćemo koristiti za pokretanje i pokretanje našeg sloja spremišta uzoraka:

 org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE org.hsqldb hsqldb 2.4.0 runtime 

Imajte na umu da smo uključili i ovisnost HSQLDB. Bez toga će Spring Boot pokušati automatski konfigurirati a Izvor podataka bean i JDBC spremište za nas putem HikariCP-a.

Kao posljedica, ako ne navedemo valjano Izvor podataka ovisnost u našem pom.xml datoteku, dobit ćemo neuspjeh gradnje.

Uz to, provjerimo najnoviju verziju spring-boot-starter-data-jpa na Maven Central.

3. Povezivanje s HSQLDB bazom podataka

Za vježbanje našeg sloja demo spremišta koristit ćemo bazu podataka u memoriji. Međutim, moguće je raditi i s bazama podataka temeljenim na datotekama. Istražit ćemo svaku od ovih metoda u odjeljcima u nastavku.

3.1. Pokretanje vanjskog HSQLDB poslužitelja

Pogledajmo kako pokrenuti vanjski HSQLDB poslužitelj i stvoriti bazu podataka temeljenu na datotekama. Instaliranje HSQLDB-a i pokretanje poslužitelja sveukupno je jednostavno.

Evo koraka koje bismo trebali slijediti:

  • Prvo ćemo preuzeti HSQLDB i raspakirati ga u mapu
  • Budući da HSQLDB ne nudi zadanu bazu podataka iz okvira, stvorit ćemo bazu podataka tzv "Testdb" na primjer svrhe
  • Pokrenut ćemo naredbeni redak i prijeći na HSQLDB podaci mapu
  • Unutar podaci mapu, pokrenut ćemo sljedeću naredbu:
    java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
  • Gornja naredba pokrenut će HSQLDB poslužitelj i stvoriti našu bazu podataka čije će izvorne datoteke biti pohranjene u podaci mapu
  • Možemo se uvjeriti da je baza podataka stvarno stvorena odlaskom na podaci mapa, koja bi trebala sadržavati skup datoteka pod nazivom "Testdb.lck", "Testdb.log", "Testdb.properties", i "Testdb.script" (broj datoteka varira ovisno o vrsti baze podataka koju izrađujemo)

Jednom kada je baza podataka postavljena, moramo stvoriti vezu s njom.

Da biste to učinili u sustavu Windows, idemo na bazu podataka kanta za smeće mapu i pokrenite runManagerSwing.bat datoteka. Ovo će otvoriti početni zaslon HSQLDB Upravitelja baze podataka, gdje možemo unijeti vjerodajnice za vezu:

  • Tip: HSQL Database Engine
  • URL:jdbc: hsqldb: hsql: // localhost / testdb
  • Korisnik: “SA” (administrator sustava)
  • Zaporka: ostavite polje prazno

Na Linuxu / Unixu / Macu, možemo koristiti NetBeans, Eclipse ili IntelliJ IDEA za stvaranje veze s bazom podataka putem vizualnih alata IDE-a, koristeći iste vjerodajnice.

U bilo kojem od ovih alata jednostavno je stvoriti tablicu baze podataka izvršavanjem SQL skripte u Upravitelju baze podataka ili unutar IDE-a.

Jednom povezani, možemo stvoriti kupci stol:

STVARI kupce (ID INT NIJE NULL, ime VARCHAR (45), e-pošta VARCHAR (45), PRIMARNI KLJUČ (ID)); 

U samo nekoliko jednostavnih koraka stvorili smo datoteku baziranu HSQLDB koja sadrži kupci stol.

3.2. The primjena.svojstva Datoteka

Ako se želimo povezati s prethodnom bazom podataka baziranom na datotekama iz Spring Boota, evo postavki koje bismo trebali uključiti u primjena.svojstva datoteka:

spring.datasource.driver-class-name = org.hsqldb.jdbc.JDBCDriver spring.datasource.url = jdbc: hsqldb: hsql: // localhost / testdb spring.datasource.username = sa spring.datasource.password = spring.jpa .hibernate.ddl-auto = ažuriranje 

Alternativno, ako koristimo bazu podataka u memoriji, trebali bismo koristiti sljedeće:

spring.datasource.driver-class-name = org.hsqldb.jdbc.JDBCDriver spring.datasource.url = jdbc: hsqldb: mem: testdb; DB_CLOSE_DELAY = -1 spring.datasource.username = sa spring.datasource.password = spring. jpa.hibernate.ddl-auto = stvori 

Imajte na umu DB_CLOSE_DELAY = -1 parametar dodan na kraj URL-a baze podataka. Kada radimo s bazom podataka u memoriji, moramo to odrediti, tako da implementacija JPA, koja je hibernacija, neće zatvoriti bazu podataka dok je aplikacija pokrenuta.

4. The Kupac Entitet

S postavkama veze s bazom podataka koje su već postavljene, sljedeće moramo definirati naše Kupac entitet:

@Entity @Table (name = "kupci") javna klasa Kupac {@Id @GeneratedValue (strategy = GenerationType.AUTO) private long id; privatni naziv niza; privatni String e-mail; // standardni konstruktori / postavljači / getteri / toString} 

5. The Kupac Spremište

Uz to, trebamo implementirati tanki sloj postojanosti, koji nam omogućava da imamo osnovnu CRUD funkcionalnost Kupac JPA entiteti.

Ovaj sloj možemo jednostavno implementirati samo proširivanjem CrudRepository sučelje:

Javno sučelje @Repository CustomerRepository proširuje CrudRepository {}

6. Testiranje Kupac Spremište

Na kraju, trebali bismo biti sigurni da se Spring Boot može stvarno povezati s HSQLDB. To možemo lako postići samo testiranjem sloja spremišta.

Počnimo testirati spremišta findById () i findAll () metode:

@RunWith (SpringRunner.class) @SpringBootTest javna klasa CustomerRepositoryTest {@Autowired private CustomerRepository customerRepository; @Test javna void whenFindingCustomerById_thenCorrect () {customerRepository.save (novi kupac ("John", "[e-mail zaštićen]")); assertThat (customerRepository.findById (1L)). isInstanceOf (Neobvezno.klasa); } @Test public void whenFindingAllCustomers_thenCorrect () {customerRepository.save (novi kupac ("John", "[email protected]")); customerRepository.save (novi kupac ("Julie", "[e-pošta zaštićena]")); assertThat (customerRepository.findAll ()). isInstanceOf (List.class); }} 

Napokon, testirajmo uštedjeti() metoda:

@Test public void whenSavingCustomer_thenCorrect () {customerRepository.save (novi kupac ("Bob", "[e-pošta zaštićena]")); Kupac kupac = customerRepository.findById (1L) .orElseGet (() -> novi kupac ("john", "[e-pošta zaštićena]")); assertThat (customer.getName ()). isEqualTo ("Bob"); }

7. Zaključak

U ovom članku, naučili smo kako integrirati Spring Boot s HSQLDB, i kako koristiti bazu podataka zasnovanu na datotekama ili u memoriji u razvoju osnovnog sloja JPA spremišta.

Kao i obično, svi uzorci koda prikazani u ovom članku dostupni su na GitHubu.