logo

Baza podatkov Spring Boot H2

Kaj je baza podatkov v pomnilniku

Podatkovna baza v pomnilniku se za shranjevanje podatkov opira na sistemski pomnilnik v nasprotju s prostorom na disku. Ker je dostop do pomnilnika hitrejši od dostopa do diska. Podatkovno bazo v pomnilniku uporabljamo, kadar nam podatkov ni treba obdržati. Baza podatkov v pomnilniku je vdelana baza podatkov. Baze podatkov v pomnilniku so privzeto nestanovitne in vsi shranjeni podatki se izgubijo, ko znova zaženemo aplikacijo.

Široko uporabljene baze podatkov v pomnilniku so H2, HSQLDB (Baza podatkov HyperSQL) , in Apaški derbi. Konfiguracijo ustvari samodejno.

Vztrajnost v primerjavi z bazo podatkov v pomnilniku

Trajna zbirka podatkov ohranja podatke v fizičnem pomnilniku. Podatki bodo na voljo, tudi če bo strežnik baze podatkov zavrnjen. Nekatere priljubljene zbirke podatkov o obstojnosti so Oracle , MySQL , Postgres , itd.

V primeru baza podatkov v pomnilniku, shranjevanje podatkov v sistemski pomnilnik . Ko je program zaprt, je izgubil podatke. Koristno je za MALO s (Proof of Concepts), ni za produkcijsko aplikacijo. Široko uporabljena baza podatkov v pomnilniku je H2.

Kaj je baza podatkov H2

H2 je vdelano, odprtokodno, in v spomin zbirka podatkov. Je sistem za upravljanje relacijskih baz podatkov, napisan v Java . Je odjemalec/strežnik aplikacija. Na splošno se uporablja v testiranje enote . Podatke shranjuje v pomnilnik, ne obdrži podatkov na disku.

Prednosti

  • Ničelna konfiguracija
  • Je enostaven za uporabo.
  • Je lahek in hiter.
  • Zagotavlja preprosto konfiguracijo za preklapljanje med resnično bazo podatkov in bazo podatkov v pomnilniku.
  • Podpira standardni SQL in JDBC API.
  • Zagotavlja spletno konzolo za vzdrževanje v bazi podatkov.

Konfigurirajte bazo podatkov H2

Če želimo v aplikaciji uporabljati bazo podatkov H2, moramo v datoteko pom.xml dodati naslednjo odvisnost:

 com.h2database h2 runtime 

Ko dodamo odvisnost, moramo konfigurirati URL vira podatkov, ime razreda gonilnika, uporabniško ime, in geslo baze podatkov H2. Spring Boot ponuja preprost način za konfiguriranje teh lastnosti aplikacija.lastnosti mapa.

stringformat
 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 lastnina, mem je ime baze podatkov v pomnilniku in testdb je ime sheme, ki jo privzeto ponuja H2. Definiramo lahko tudi lastno shemo in bazo podatkov. Privzeto uporabniško ime je na in prazno geslo označuje an prazno geslo. Če želimo spremeniti uporabniško ime in geslo, lahko te vrednosti preglasimo.

Obdrži podatke v bazi podatkov H2

Če želimo obdržati podatke v bazi podatkov H2, jih moramo shraniti v datoteko. Da bi dosegli isto, moramo spremeniti lastnost URL-ja podatkovnega vira.

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

V zgornji nepremičnini je vzorčni podatki je ime datoteke.

Ustvarite shemo in napolnite podatke

Shemo lahko definiramo tako, da ustvarimo a SQL datoteka v vir mapo (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 ); 

Podatke v tabeli lahko zapolnimo tako, da ustvarimo a SQL datoteka v vir mapo (src/main/resource).

podatki.sql

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

Spring Boot samodejno prevzame podatki.sql datoteko in jo zaženite z bazo podatkov H2 med zagonom aplikacije.

H2 konzola

Privzeto je pogled konzole baze podatkov H2 onemogočen. Pred dostopom do baze podatkov H2 jo moramo omogočiti z uporabo naslednje lastnosti.

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

Ko smo omogočili konzolo H2, lahko zdaj dostopamo do konzole H2 v brskalniku s klicem URL-ja http://localhost:8080/h2-console. Naslednja slika prikazuje pogled konzole baze podatkov H2.

Baza podatkov Spring Boot H2

Na zgornjem posnetku zaslona smo definirali lastno bazo podatkov z imenom javatpoint .

Primer pomladnega zagona H2

Nastavimo aplikacijo Spring Boot z bazo podatkov H2.

Korak 1: Odprite Spring Initializr http://start.spring.io.

2. korak: Izberite različico Spring Boot 2.3.0.M1.

2. korak: Zagotovite skupina ime. Zagotovili smo com.javatpoint.

3. korak: Zagotovite Artefakt Id. Zagotovili smo spring-boot-h2-database-example.

5. korak: Dodajte odvisnosti Spring Web, Spring Data JPA, in H2 baza podatkov.

6. korak: Kliknite na Ustvari gumb. Ko kliknemo gumb Generate, projekt ovije v a kozarec datoteko in jo prenese v lokalni sistem.

Baza podatkov Spring Boot H2

7. korak: Izvleček datoteko Jar in jo prilepite v delovni prostor STS.

8. korak: Uvozi mapo projekta v STS.

Datoteka -> Uvoz -> Obstoječi projekti Maven -> Prebrskaj -> Izberite mapo spring-boot-h2-database-example -> Končaj

Uvoz traja nekaj časa.

9. korak: Ustvarite paket z imenom com.javatpoint.model v mapi src/main/java.

10. korak: V paketu ustvarite razred modela com.javatpoint.model. Ustvarili smo razred modela z imenom študent. Pri pouku knjig smo naredili naslednje:

  • Določite štiri spremenljivke id, starost, ime, in
  • Ustvarite pridobivalnike in nastavitve.
    Z desno miškino tipko kliknite datoteko -> Izvor -> Generate Getters and Setters.
  • Označi razred kot Entiteta z uporabo opombe @Entiteta.
  • Označi razred kot Tabela ime z uporabo opombe @Miza.
  • Vsako spremenljivko opredelite kot Stolpec z uporabo opombe @Stolpec.

Š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; } } 

11. korak: Ustvarite paket z imenom com.javatpoint.controller v mapi src/main/java.

12. korak: V paketu ustvarite razred krmilnika com.javatpoint.controller . Ustvarili smo razred krmilnika z imenom Študentski krmilnik . V razredu StudentController smo naredili naslednje:

  • Označi razred kot RestController z uporabo opombe @RestController.
  • Samodejno ožičite Študentski servis razreda z uporabo opombe @Autowired .
  • Določite naslednje metode:
      getAllStudent():Vrne seznam vseh študentov.
  • getStudent():Vrne podrobnost študenta, ki smo jo podali v spremenljivki poti. ID smo posredovali kot argument z uporabo pripisa @PathVariable. Opomba nakazuje, da mora biti parameter metode vezan na spremenljivko predloge URI.izbrisatiStudent():Izbriše določenega študenta, ki smo ga določili v spremenljivki poti.shraniStudent():Prihrani podrobnosti študenta. Opomba @RequestBody označuje, da mora biti parameter metode vezan na telo spletne zahteve.

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(); } } 

13. korak: Ustvarite paket z imenom com.javatpoint.service v mapi src/main/java.

14. korak: Ustvariti Storitev razred. Ustvarili smo servisni razred z imenom Študentski servis v paketu com.javatpoint.service.

razlika med ledom in snegom

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); } } 

15. korak: Ustvarite paket z imenom com.javatpoint.repository v mapi src/main/java.

16. korak: Ustvariti Repozitorij vmesnik. Ustvarili smo vmesnik skladišča z imenom StudentRepository v paketu com.javatpoint.repository. Razširja Crud Repozitorij vmesnik.

StudentRepository.java

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

Zdaj bomo konfigurirali vir podatkov URL, ime razreda gonilnika, uporabniško ime, in geslo, v aplikacija.lastnosti mapa.

17. korak: Odprite aplikacija.lastnosti datoteko in konfigurirajte naslednje lastnosti.

aplikacija.lastnosti

 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 

Opomba: Ne pozabite omogočiti konzole H2.

Po izdelavi vseh razredov in paketov je imenik projekta videti takole.

Baza podatkov Spring Boot H2

Zdaj bomo zagnali aplikacijo.

18. korak: Odprto SpringBootH2DatabaseExampleApplication.java datoteko in jo zaženite kot aplikacijo 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 naslednjem koraku bomo uporabili rest client Poštar za pošiljanje OBJAVI in DOBITI prošnja . Če Postman ni nameščen v vašem sistemu, sledite spodnjim korakom:

19. korak: Odprite Poštar in naredite naslednje:

  • Izberite OBJAVI
  • Prikličite URL http://localhost:8080/student.
  • Izberite Telo
  • Izberite vrsto vsebine JSON (aplikacija/json).
  • Vnesite podatke. V telo smo vstavili naslednje podatke:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Kliknite na Pošlji

Ko je zahteva uspešno izvedena, prikaže Stanje: 200 OK . To pomeni, da je bil zapis uspešno vstavljen v bazo podatkov.

Podobno smo vstavili naslednje podatke.

 { '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]' } 

Dostopimo do konzole H2, da si ogledamo podatke.

20. korak: Odprite brskalnik in pokličite URL http://localhost:8080/h2-console. Kliknite na Povežite se gumb, kot je prikazano spodaj.

Baza podatkov Spring Boot H2

Po kliku na Povežite se gumb, vidimo Študent tabelo v bazi podatkov, kot je prikazano spodaj.

Baza podatkov Spring Boot H2

21. korak: Kliknite na Študent tabelo in nato kliknite na Teči gumb. Tabela prikazuje podatke, ki smo jih vnesli v telo.

Baza podatkov Spring Boot H2

22. korak: Odprite Poštar in pošljite a DOBITI prošnja. Vrne podatke, ki smo jih vstavili v zbirko podatkov.

deterministični končni avtomati
Baza podatkov Spring Boot H2

Pošljimo a DOBITI zahteva z naslovom URL http://localhost:8080/student/{id}. Priklicali smo URL http://localhost:8080/student/3. Vrne podrobnosti študenta, katerega ID je 3.

Baza podatkov Spring Boot H2

Podobno lahko pošljemo tudi a IZBRIŠI prošnja. Recimo, da želimo izbrisati zapis študenta, katerega ID je 2.

Če želite izbrisati zapis študenta, pošljite a IZBRIŠI zahteva z naslovom URL http://localhost:8080/student/2. Vidimo, da študent, katerega id 2 je bil izbrisan iz baze podatkov.

Baza podatkov Spring Boot H2
Prenesite primer H2 Database Project