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. 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: 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. 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. 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: 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: 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: U samo nekoliko jednostavnih koraka stvorili smo datoteku baziranu HSQLDB koja sadrži kupci stol. 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: Alternativno, ako koristimo bazu podataka u memoriji, trebali bismo koristiti sljedeće: 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. S postavkama veze s bazom podataka koje su već postavljene, sljedeće moramo definirati naše Kupac entitet: 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: 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: Napokon, testirajmo uštedjeti() metoda: 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.2. Ovisnosti Mavena
org.springframework.boot spring-boot-starter-data-jpa 2.2.2.RELEASE org.hsqldb hsqldb 2.4.0 runtime
3. Povezivanje s HSQLDB bazom podataka
3.1. Pokretanje vanjskog HSQLDB poslužitelja
java -cp ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file.testdb --dbname0.testdb
STVARI kupce (ID INT NIJE NULL, ime VARCHAR (45), e-pošta VARCHAR (45), PRIMARNI KLJUČ (ID));
3.2. The 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
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
4. The 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
Javno sučelje @Repository CustomerRepository proširuje CrudRepository {}
6. Testiranje Kupac Spremište
@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); }}
@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