logo

Spring Boot H2 databáza

Čo je databáza v pamäti

Databáza v pamäti sa na ukladanie údajov spolieha na systémovú pamäť, nie na diskový priestor. Pretože prístup k pamäti je rýchlejší ako prístup k disku. In-memory databázu používame vtedy, keď nepotrebujeme uchovávať údaje. Databáza v pamäti je vstavaná databáza. Databázy v pamäti sú v predvolenom nastavení nestále a všetky uložené údaje sa stratia, keď aplikáciu reštartujeme.

Široko používané in-memory databázy sú H2, HSQLDB (HyperSQL databáza) , a Apache Derby. Konfiguráciu vytvorí automaticky.

Perzistencia vs. databáza v pamäti

Perzistentná databáza uchováva údaje vo fyzickej pamäti. Údaje budú dostupné, aj keď bude databázový server vrátený. Niektoré populárne databázy perzistencie sú Oracle , MySQL , Postgres , atď.

V prípade databáza v pamäti, dátové úložisko v systémová pamäť . Pri zatvorení programu došlo k strate údajov. Je to užitočné pre MÁLO s (Proof of Concepts), nie pre produkčnú aplikáciu. Široko používaná in-memory databáza je H2.

Čo je databáza H2

H2 je vložené, open-source, a v pamäti databázy. Je to systém na správu relačných databáz napísaný v Java . Je to a Klientsky server aplikácie. Všeobecne sa používa v jednotkové testovanie . Ukladá dáta do pamäte, neuchováva dáta na disku.

Výhody

  • Nulová konfigurácia
  • Ľahko sa používa.
  • Je ľahký a rýchly.
  • Poskytuje jednoduchú konfiguráciu na prepínanie medzi skutočnou databázou a databázou v pamäti.
  • Podporuje štandardné SQL a JDBC API.
  • Poskytuje webovú konzolu na udržiavanie v databáze.

Konfigurácia databázy H2

Ak chceme v aplikácii použiť databázu H2, musíme do súboru pom.xml pridať nasledujúcu závislosť:

 com.h2database h2 runtime 

Po pridaní závislosti musíme nakonfigurovať URL zdroja údajov, názov triedy ovládača, meno používateľa, a heslo databázy H2. Spring Boot poskytuje jednoduchý spôsob konfigurácie týchto vlastností aplikácie.vlastnosti súbor.

 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect 

V spring.datasource.url nehnuteľnosť, pamäť je názov databázy v pamäti a testdb je názov schémy, ktorú štandardne poskytuje H2. Môžeme si definovať aj vlastnú schému a databázu. Predvolené používateľské meno je na a prázdne heslo označuje an prázdny heslo. Ak chceme zmeniť užívateľské meno a heslo, môžeme tieto hodnoty prepísať.

java matematika náhodná

Zachovať údaje v databáze H2

Ak chceme zachovať údaje v databáze H2, mali by sme údaje uložiť do súboru. Aby sme dosiahli to isté, musíme zmeniť vlastnosť adresy URL zdroja údajov.

 #persist the data spring.datasource.url=jdbc:h2:file:/data/sampledata spring.datasource.url=jdbc:h2:C:/data/sampledata 

Vo vyššie uvedenom majetku, vzorové údaje je názov súboru.

Vytvorte schému a vyplňte údaje

Schému môžeme definovať vytvorením a SQL súbor v zdroj priečinok (src/main/resource).

schema.sql

 DROP TABLE IF EXISTS CITY; CREATE TABLE CITY ( City_code INT AUTO_INCREMENT PRIMARY KEY, city_name VARCHAR(50) NOT NULL, city_pincode INT(8) NOT NULL ); 

Údaje v tabuľke môžeme vyplniť vytvorením a SQL súbor v zdroj priečinok (src/main/resource).

data.sql

 INSERT INTO CITY VALUES (11, 'Delhi', 110001); INSERT INTO CITY VALUES (12, 'Kanpur', 208001); INSERT INTO CITY VALUES (13, 'Lucknow', 226001); 

Spring Boot automaticky zdvihne data.sql súbor a spustite ho proti databáze H2 počas spúšťania aplikácie.

Konzola H2

V predvolenom nastavení je konzolové zobrazenie databázy H2 zakázané. Pred prístupom k databáze H2 ju musíme povoliť pomocou nasledujúcej vlastnosti.

 #enabling the H2 console spring.h2.console.enabled=true 

Keď sme povolili konzolu H2, teraz môžeme pristupovať ku konzole H2 v prehliadači vyvolaním adresy URL http://localhost:8080/h2-console. Nasledujúci obrázok zobrazuje konzolový pohľad na databázu H2.

Databáza Spring Boot H2

Na obrázku vyššie sme definovali vlastnú databázu s názvom javatpoint .

Príklad Spring Boot H2

Nastavíme aplikáciu Spring Boot s databázou H2.

Krok 1: Otvorte Spring Initializr http://start.spring.io .

Krok 2: Vyberte verziu Spring Boot 2.3.0.M1.

Krok 2: Poskytnite Skupina názov. Poskytli sme com.javatpoint.

Krok 3: Poskytnite Artefakt Id. Poskytli sme spring-boot-h2-database-priklad.

Krok 5: Pridajte závislosti Spring Web, Spring Data JPA , a Databáza H2.

Krok 6: Klikni na Generovať tlačidlo. Keď klikneme na tlačidlo Generovať, zabalí projekt do a Jar súbor a stiahne ho do lokálneho systému.

Databáza Spring Boot H2

Krok 7: Extrakt súbor Jar a vložte ho do pracovného priestoru STS.

Krok 8: Importovať priečinok projektu do STS.

Súbor -> Import -> Existujúce projekty Maven -> Prehľadávať -> Vyberte priečinok spring-boot-h2-database-example -> Dokončiť

skener.ďalej java

Import trvá nejaký čas.

Krok 9: Vytvorte balík s názvom com.javatpoint.model v priečinku src/main/java.

Krok 10: Vytvorte triedu modelu v balíku com.javatpoint.model. Vytvorili sme triedu modelu s názvom Študent. V triede Knihy sme urobili nasledovné:

  • Definujte štyri premenné id, vek, meno, a
  • Generovať getterov a setrov.
    Kliknite pravým tlačidlom myši na súbor -> Zdroj -> Generovať získavače a nastavovače.
  • Označte triedu ako Entita pomocou anotácie @Entity.
  • Označte triedu ako Tabuľka názov pomocou anotácie @Tabuľka.
  • Definujte každú premennú ako Stĺpec pomocou anotácie @Stĺpec.

Študent.java

 package com.javatpoint.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //mark class as an Entity @Entity //defining class name as Table name @Table public class Student { //mark id as primary key @Id //defining id as column name @Column private int id; //defining name as column name @Column private String name; //defining age as column name @Column private int age; //defining email as column name @Column private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 

Krok 11: Vytvorte balík s názvom com.javatpoint.controller v priečinku src/main/java.

Krok 12: Vytvorte triedu Controller v balíku com.javatpoint.controller . Vytvorili sme triedu radiča s názvom StudentController . V triede StudentController sme urobili nasledovné:

  • Označte triedu ako RestController pomocou anotácie @RestController.
  • Autowire StudentService triedy pomocou anotácie @Autowired .
  • Definujte nasledujúce metódy:
      getAllStudent():Vráti zoznam všetkých študentov.
  • getStudent():Vráti detail študenta, ktorý sme zadali v premennej cesta. Identifikátor sme odovzdali ako argument pomocou anotácie @PathVariable. Anotácia naznačuje, že parameter metódy by mal byť naviazaný na premennú šablóny URI.deleteStudent():Vymaže konkrétneho študenta, ktorého sme zadali v premennej cesta.saveStudent():Uloží detail študenta. Anotácia @RequestBody označuje, že parameter metódy by mal byť naviazaný na telo webovej požiadavky.

StudentController.java

 package com.javatpoint.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.javatpoint.model.Student; import com.javatpoint.service.StudentService; //creating RestController @RestController public class StudentController { //autowired the StudentService class @Autowired StudentService studentService; //creating a get mapping that retrieves all the students detail from the database @GetMapping('/student') private List getAllStudent() { return studentService.getAllStudent(); } //creating a get mapping that retrieves the detail of a specific student @GetMapping('/student/{id}') private Student getStudent(@PathVariable('id') int id) { return studentService.getStudentById(id); } //creating a delete mapping that deletes a specific student @DeleteMapping('/student/{id}') private void deleteStudent(@PathVariable('id') int id) { studentService.delete(id); } //creating post mapping that post the student detail in the database @PostMapping('/student') private int saveStudent(@RequestBody Student student) { studentService.saveOrUpdate(student); return student.getId(); } } 

Krok 13: Vytvorte balík s názvom com.javatpoint.service v priečinku src/main/java.

Krok 14: Vytvor servis trieda. Vytvorili sme triedu služieb s názvom StudentService v balíku com.javatpoint.service.

StudentService.java

 package com.javatpoint.service; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.javatpoint.model.Student; import com.javatpoint.repository.StudentRepository; @Service public class StudentService { @Autowired StudentRepository studentRepository; //getting all student records public List getAllStudent() { List students = new ArrayList(); studentRepository.findAll().forEach(student -> students.add(student)); return students; } //getting a specific record public Student getStudentById(int id) { return studentRepository.findById(id).get(); } public void saveOrUpdate(Student student) { studentRepository.save(student); } //deleting a specific record public void delete(int id) { studentRepository.deleteById(id); } } 

Krok 15: Vytvorte balík s názvom com.javatpoint.repository v priečinku src/main/java.

Krok 16: Vytvor Úložisko rozhranie. Vytvorili sme rozhranie úložiska s názvom ŠtudentRepository v balíku com.javatpoint.repository. Rozširuje to Crud Repository rozhranie.

StudentRepository.java

 package com.javatpoint.repository; import org.springframework.data.repository.CrudRepository; import com.javatpoint.model.Student; public interface StudentRepository extends CrudRepository { } 

Teraz nakonfigurujeme zdroj údajov URL, názov triedy ovládača, používateľské meno, a heslo, v aplikácie.vlastnosti súbor.

Krok 17: Otvor aplikácie.vlastnosti súbor a nakonfigurujte nasledujúce vlastnosti.

Sridevi

aplikácie.vlastnosti

 spring.datasource.url=jdbc:h2:mem:javatpoint spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect #enabling the H2 console spring.h2.console.enabled=true 

Poznámka: Nezabudnite povoliť konzolu H2.

Po vytvorení všetkých tried a balíkov vyzerá adresár projektu nasledovne.

Spring Boot H2 databáza

Teraz spustíme aplikáciu.

Krok 18: OTVORENÉ SpringBootH2DatabaseExampleApplication.java súbor a spustite ho ako aplikáciu Java.

SpringBootH2DatabaseExampleApplication.java

 package com.javatpoint; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootH2DatabaseExampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootH2DatabaseExampleApplication.class, args); } } 

V ďalšom kroku použijeme klienta rest Poštár za odoslanie POST a GET žiadosť . Ak Postman nie je nainštalovaný vo vašom systéme, postupujte podľa nasledujúcich krokov:

Krok 19: Otvor Poštár a urobte nasledovné:

  • Vyberte POST
  • Vyvolajte adresu URL http://localhost:8080/student.
  • Vyberte Telo
  • Vyberte typ obsahu JSON (aplikácia/json).
  • Vložte údaje. Do tela sme vložili nasledujúce údaje:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Klikni na Odoslať

Keď je požiadavka úspešne vykonaná, zobrazí sa Stav: 200 OK . Znamená to, že záznam bol úspešne vložený do databázy.

Podobne sme vložili nasledujúce údaje.

 { 'id': '002', 'age': '24', 'name': 'Vadik', 'email': '[email protected]' } { 'id': '003', 'age': '21', 'name': 'Prateek', 'email': '[email protected]' } { 'id': '004', 'age': '25', 'name': 'Harsh', 'email': '[email protected]' } { 'id': '005', 'age': '24', 'name': 'Swarit', 'email': '[email protected]' } 

Ak chcete zobraziť údaje, prejdite na konzolu H2.

Krok 20: Otvorte prehliadač a vyvolajte URL http://localhost:8080/h2-console. Klikni na Pripojte sa tlačidlo, ako je znázornené nižšie.

Spring Boot H2 databáza

Po kliknutí na Pripojte sa tlačidlo, vidíme Študent tabuľky v databáze, ako je uvedené nižšie.

Spring Boot H2 databáza

Krok 21: Klikni na Študent a potom kliknite na Bežať tlačidlo. V tabuľke sú uvedené údaje, ktoré sme vložili do tela.

Databáza Spring Boot H2

Krok 22: Otvorte Postman a odošlite a GET žiadosť. Vráti údaje, ktoré sme vložili do databázy.

Spring Boot H2 databáza

Pošlime a GET žiadosť s adresou URL http://localhost:8080/student/{id}. Vyvolali sme adresu URL http://localhost:8080/student/3. Vráti detail študenta, ktorého ID je 3.

padding css
Databáza Spring Boot H2

Podobne môžeme poslať aj a VYMAZAŤ žiadosť. Predpokladajme, že chceme odstrániť záznam študenta, ktorého ID je 2.

Ak chcete odstrániť záznam študenta, odošlite a VYMAZAŤ žiadosť s URL http://localhost:8080/student/2. Vidíme, že študent, ktorého id je 2 bol vymazaný z databázy.

Spring Boot H2 databáza
Stiahnite si príklad projektu databázy H2