Integrácia Spring Boot s HSQLDB

1. Prehľad

Vďaka Spring Boot je práca s rôznymi databázovými systémami skutočne ľahká bez problémov s manuálnou správou závislostí.

Presnejšie, štartér Spring Data JPA poskytuje všetky funkcie potrebné na bezproblémovú integráciu s niekoľkými Dátový zdroj implementácie.

V tomto návode sa dozvieme, ako integrovať Spring Boot s HSQLDB.

2. Závislosti Maven

Aby sme demonštrovali, aká ľahká je integrácia Spring Boot s HSQLDB, vytvoríme jednoduchú vrstvu úložiska JPA, ktorá vykonáva operácie CRUD na entitách zákazníkov pomocou databázy HSQLDB v pamäti.

Tu je štartovací program Spring Boot, ktorý použijeme na uvedenie a spustenie našej vrstvy vzorového úložiska:

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

Upozorňujeme, že sme zahrnuli aj závislosť HSQLDB. Bez neho sa Spring Boot pokúsi automaticky nakonfigurovať a Dátový zdroj bean a fond pripojení JDBC pre nás prostredníctvom HikariCP.

Ako dôsledok, ak neurčíme platný Dátový zdroj závislosť v našom pom.xml súboru, dostaneme zlyhanie zostavenia.

Okrem toho skontrolujte najnovšiu verziu servera spring-boot-starter-data-jpa na Maven Central.

3. Pripojenie k databáze HSQLDB

Na precvičenie našej vrstvy demo úložiska použijeme databázu v pamäti. Je však možné pracovať aj so súborovými databázami. Každú z týchto metód preskúmame v nasledujúcich častiach.

3.1. Prevádzka externého servera HSQLDB

Poďme sa pozrieť na to, ako spustiť externý server HSQLDB a vytvoriť databázu založenú na súboroch. Inštalácia HSQLDB a spustenie servera je celkovo jednoduchá.

Tu by sme mali nasledovať kroky:

  • Najskôr si stiahneme HSQLDB a rozbalíme ho do priečinka
  • Pretože HSQLDB neposkytuje predvolenú databázu z krabice, vytvoríme databázu s názvom „Testdb“ napríklad účely
  • Spustíme príkazový riadok a prejdeme k HSQLDB údaje priečinok
  • V rámci údaje priečinok, spustíme nasledujúci príkaz:
    java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
  • Vyššie uvedený príkaz spustí server HSQLDB a vytvorí našu databázu, ktorej zdrojové súbory budú uložené v údaje priečinok
  • Môžeme sa ubezpečiť, že databáza bola skutočne vytvorená, prechodom na stránku údaje priečinok, ktorý by mal obsahovať množinu súborov s názvom „Testdb.lck“, „Testdb.log“, „Testdb.properties“a „Testdb.script“ (počet súborov sa líši v závislosti od typu databázy, ktorú vytvárame)

Po vytvorení databázy je potrebné vytvoriť k nej pripojenie.

Ak to chcete urobiť v systéme Windows, poďme k databáze kôš priečinok a spustite priečinok runManagerSwing.bat spis. Otvorí sa úvodná obrazovka správcu databázy HSQLDB, kde môžeme zadať poverenia pripojenia:

  • Typ: HSQL databázový stroj
  • URL:jdbc: hsqldb: hsql: // localhost / testdb
  • Užívateľ: „SA“ (správca systému)
  • Heslo: pole nechajte prázdne

V systémoch Linux / Unix / Mac, môžeme na vytvorenie databázového pripojenia pomocou vizuálnych nástrojov IDE pomocou rovnakých údajov použiť NetBeans, Eclipse alebo IntelliJ IDEA.

V ktoromkoľvek z týchto nástrojov je jednoduché vytvoriť databázovú tabuľku vykonaním skriptu SQL v Správcovi databáz alebo v IDE.

Po pripojení môžeme vytvoriť zákazníkov tabuľka:

CREATE TABLE customers (id INT NOT NULL, name VARCHAR (45), email VARCHAR (45), PRIMARY KEY (ID)); 

Len v niekoľkých jednoduchých krokoch sme vytvorili súborovú databázu HSQLDB obsahujúcu a zákazníkov stôl.

3.2. The application.properties Súbor

Ak sa chceme pripojiť k predchádzajúcej súborovej databáze z Spring Boot, tu je nastavenie, ktoré by sme mali zahrnúť do application.properties spis:

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 = aktualizácia 

Prípadne, ak použijeme databázu v pamäti, mali by sme použiť tieto:

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 = vytvoriť 

Vezmite prosím na vedomie DB_CLOSE_DELAY = -1 parameter pripojený na koniec adresy URL databázy. Pri práci s databázou v pamäti to musíme špecifikovať, takže implementácia JPA, ktorou je režim dlhodobého spánku, nezatvorí databázu, kým je aplikácia spustená.

4. The Zákazník Subjekt

Keď už sú nastavenia pripojenia k databáze nastavené, musíme si definovať naše Zákazník subjekt:

@Entity @Table (name = "customers") verejná trieda Zákazník {@Id @GeneratedValue (strategy = GenerationType.AUTO) súkromné ​​dlhé ID; súkromné ​​meno reťazca; súkromný reťazcový e-mail; // štandardné konštruktory / setre / getre / toString} 

5. Zákazník Úložisko

Okrem toho musíme implementovať tenkú vrstvu perzistencie, ktorá nám umožňuje mať na sebe základné funkcie CRUD Zákazník Subjekty JPA.

Túto vrstvu môžeme ľahko implementovať iba rozšírením Úložisko Crud rozhranie:

@Repository verejné rozhranie CustomerRepository rozširuje CrudRepository {}

6. Testovanie Zákazník Úložisko

Nakoniec by sme sa mali ubezpečiť, že Spring Boot sa môže skutočne pripojiť k HSQLDB. Ľahko to dosiahneme iba testovaním vrstvy úložiska.

Začnime testovať úložisko findById () a findAll () metódy:

@RunWith (SpringRunner.class) @SpringBootTest verejná trieda CustomerRepositoryTest {@Autowired private CustomerRepository customerRepository; @Test public void whenFindingCustomerById_thenCorrect () {customerRepository.save (new Customer ("John", "[email protected]")); assertThat (customerRepository.findById (1L)). isInstanceOf (Optional.class); } @Test public void whenFindingAllCustomers_thenCorrect () {customerRepository.save (new Customer ("John", "[email protected]")); customerRepository.save (nový zákazník ("Julie", "[chránený e-mailom]")); assertThat (customerRepository.findAll ()). isInstanceOf (List.class); }} 

Nakoniec otestujme uložiť () metóda:

@ Test public void whenSavingCustomer_thenCorrect () {customerRepository.save (nový zákazník ("Bob", "[chránený e-mailom]")); Zákazník zákazník = customerRepository.findById (1L) .orElseGet (() -> nový zákazník ("john", "[chránený e-mailom]")); assertThat (customer.getName ()). isEqualTo ("Bob"); }

7. Záver

V tomto článku naučili sme sa, ako integrovať Spring Boot s HSQLDB, a ako používať databázu založenú na súboroch alebo v pamäti pri vývoji základnej vrstvy úložiska JPA.

Ako obvykle sú všetky ukážky kódu zobrazené v tomto článku k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found