logo

Spring Boot H2-database

Hva er databasen i minnet

In-memory database er avhengig av systemminne i motsetning til diskplass for lagring av data. Fordi minnetilgang er raskere enn disktilgang. Vi bruker in-memory-databasen når vi ikke trenger å vedvare dataene. Databasen i minnet er en innebygd database. Databasene i minnet er flyktige, som standard, og alle lagrede data går tapt når vi starter applikasjonen på nytt.

De mye brukte databasene i minnet er H2, HSQLDB (HyperSQL-database) , og Apache Derby. Den oppretter konfigurasjonen automatisk.

Persistens vs. In-memory Database

Den vedvarende databasen bevarer dataene i det fysiske minnet. Dataene vil være tilgjengelige selv om databaseserveren returneres. Noen populære utholdenhetsdatabaser er Oracle, MySQL , Postgres , etc.

I tilfelle av minnedatabase, datalager i systemminne . Den mistet dataene når programmet ble stengt. Det er nyttig for LITT s (Proof of Concepts), ikke for en produksjonsapplikasjon. Den mye brukte in-memory databasen er H2.

Hva er H2-databasen

H2 er en innebygd, åpen kildekode, og i minne database. Det er et relasjonsdatabasestyringssystem skrevet i Java . Det er en klient server applikasjon. Det brukes vanligvis i enhetstesting . Den lagrer data i minnet, ikke bevarer dataene på disken.

Fordeler

  • Null konfigurasjon
  • Den er enkel å bruke.
  • Den er lett og rask.
  • Den gir enkel konfigurasjon for å bytte mellom en ekte database og en database i minnet.
  • Den støtter standard SQL og JDBC API.
  • Det gir en nettkonsoll å vedlikeholde i databasen.

Konfigurer H2-databasen

Hvis vi vil bruke H2-databasen i en applikasjon, må vi legge til følgende avhengighet i pom.xml-filen:

 com.h2database h2 runtime 

Etter å ha lagt til avhengigheten, må vi konfigurere datakilde-URL, førerklassenavn, brukernavn, og passord av H2-databasen. Spring Boot gir en enkel måte å konfigurere disse egenskapene på applikasjonsegenskaper fil.

dhl betyr hva
 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 

I spring.datasource.url eiendom, mem er navnet på en minnedatabase og testdb er navnet på skjemaet som H2 gir, som standard. Vi kan også definere vårt eget skjema og database. Standard brukernavn er og det tomme passordet angir en tømme passord. Hvis vi ønsker å endre brukernavn og passord, kan vi overstyre disse verdiene.

Vedvarer dataene i H2-databasen

Hvis vi vil beholde dataene i H2-databasen, bør vi lagre data i en fil. For å oppnå det samme må vi endre datakildens URL-egenskap.

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

I eiendommen ovenfor er eksempeldata er et filnavn.

Opprett skjema og fyll inn data

Vi kan definere skjema ved å lage en SQL fil i ressurs mappe (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 ); 

Vi kan fylle ut data i tabellen ved å lage en SQL fil i ressurs mappe (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 henter automatisk opp data.sql fil og kjør den mot H2-databasen under oppstart av programmet.

H2 konsoll

Som standard er konsollvisningen til H2-databasen deaktivert. Før vi får tilgang til H2-databasen, må vi aktivere den ved å bruke følgende egenskap.

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

Når vi har aktivert H2-konsollen, kan vi nå få tilgang til H2-konsollen i nettleseren ved å påkalle URLen http://localhost:8080/h2-console. Følgende figur viser konsollvisningen av H2-databasen.

Spring Boot H2-database

I skjermbildet ovenfor har vi definert vår egen database kalt javatpoint .

Fjærstøvel H2 Eksempel

La oss sette opp en Spring Boot-applikasjon med H2-databasen.

Trinn 1: Åpne Spring Initializr http://start.spring.io .

Steg 2: Velg Spring Boot-versjonen 2.3.0.M1.

java oppslag

Steg 2: Gi Gruppe Navn. Vi har gitt com.javatpoint.

Trinn 3: Gi Gjenstand ID. Vi har gitt spring-boot-h2-database-eksempel.

Trinn 5: Legg til avhengigheter Spring Web, Spring Data JPA , og H2 Database.

Trinn 6: Klikk på generere knapp. Når vi klikker på Generer-knappen, omslutter det prosjektet i en Krukke filen og laster den ned til det lokale systemet.

Spring Boot H2-database

Trinn 7: Ekstrakt Jar-filen og lim den inn i STS-arbeidsområdet.

Trinn 8: Import prosjektmappen til STS.

Fil -> Importer -> Eksisterende Maven-prosjekter -> Bla gjennom -> Velg mappen spring-boot-h2-database-example -> Fullfør

Det tar litt tid å importere.

Trinn 9: Lag en pakke med navnet com.javatpoint.model i mappen src/main/java.

Trinn 10: Lag en modellklasse i pakken com.javatpoint.model. Vi har laget modellklasse med navnet Student. I Bøker-klassen har vi gjort følgende:

  • Definer fire variabler id, alder, navn, og
  • Generer Getters og Settere.
    Høyreklikk på filen -> Kilde -> Generer Getters and Setters.
  • Merk klassen som Entitet ved å bruke merknaden @Entitet.
  • Merk klassen som Bord navn ved å bruke merknaden @Bord.
  • Definer hver variabel som Kolonne ved å bruke merknaden @Kolonne.

Student.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; } } 

Trinn 11: Lag en pakke med navnet com.javatpoint.controller i mappen src/main/java.

vijay filmskuespiller

Trinn 12: Opprett en Controller-klasse i pakken com.javatpoint.controller . Vi har laget kontrollerklasse med navnet Studentkontrollør . I StudentController-klassen har vi gjort følgende:

  • Merk klassen som RestController ved å bruke merknaden @RestController.
  • Autowire StudentService klasse ved å bruke merknaden @Autowired .
  • Definer følgende metoder:
      getAllStudent():Den returnerer en liste over alle studenter.
  • getStudent():Den returnerer en studentdetalj som vi har spesifisert i stivariabelen. Vi har sendt id som argument ved å bruke merknaden @PathVariable. Merknaden indikerer at en metodeparameter skal være bundet til en URI-malvariabel.slett Student():Den sletter en spesifikk student som vi har spesifisert i stivariabelen.saveStudent():Det lagrer elevdetaljene. Merknaden @RequestBody indikerer at en metodeparameter skal være bundet til hoveddelen av nettforespørselen.

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

Trinn 13: Lag en pakke med navnet com.javatpoint.service i mappen src/main/java.

Trinn 14: Lage en Service klasse. Vi har laget en serviceklasse med navnet StudentService i pakken 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); } } 

Trinn 15: Lag en pakke med navnet com.javatpoint.repository i mappen src/main/java.

Trinn 16: Lage en Oppbevaringssted grensesnitt. Vi har laget et depotgrensesnitt med navnet StudentRepository i pakken com.javatpoint.repository. Det utvider Crud Repository grensesnitt.

StudentRepository.java

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

Nå skal vi konfigurere datakilden URL, førerklassenavn, brukernavn, og passord, i applikasjonsegenskaper fil.

Trinn 17: Åpne applikasjonsegenskaper fil og konfigurer følgende egenskaper.

applikasjonsegenskaper

java tostring-metoden
 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 

Merk: Ikke glem å aktivere H2-konsollen.

Etter å ha opprettet alle klassene og pakkene, ser prosjektkatalogen slik ut.

Spring Boot H2-database

Nå skal vi kjøre applikasjonen.

Trinn 18: Åpen SpringBootH2DatabaseExampleApplication.java fil og kjør den som Java-applikasjon.

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

I neste trinn vil vi bruke hvileklient Postbud for å sende POST og be om . Hvis Postman ikke er installert i systemet ditt, følg trinnene nedenfor:

Trinn 19: Åpne Postbud og gjør følgende:

  • Velg POST
  • Påkall URL http://localhost:8080/student.
  • Velg Kropp
  • Velg innholdstype JSON (applikasjon/json).
  • Sett inn dataene. Vi har satt inn følgende data i kroppen:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Klikk på Sende

Når forespørselen er utført, viser den Status: 200 OK . Det betyr at posten har blitt satt inn i databasen.

På samme måte har vi satt inn følgende data.

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

La oss få tilgang til H2-konsollen for å se dataene.

Trinn 20: Åpne nettleseren og start URLen http://localhost:8080/h2-console. Klikk på Koble knappen, som vist nedenfor.

Spring Boot H2-database

Etter å ha klikket på Koble knappen, ser vi Student tabellen i databasen, som vist nedenfor.

Spring Boot H2-database

Trinn 21: Klikk på Student tabellen og klikk deretter på Løpe knapp. Tabellen viser dataene som vi har satt inn i kroppen.

sortert arraylist java
Spring Boot H2-database

Trinn 22: Åpne postmannen og send en be om. Den returnerer dataene som vi har satt inn i databasen.

Spring Boot H2-database

La oss sende en forespørsel med nettadressen http://localhost:8080/student/{id}. Vi har påkalt URLen http://localhost:8080/student/3. Den returnerer detaljene til studenten med ID 3.

Spring Boot H2-database

På samme måte kan vi også sende en SLETT be om. Anta at vi ønsker å slette en studentpost hvis ID er 2.

For å slette en studentpost, send en SLETT forespørsel med URLen http://localhost:8080/student/2. Vi ser at studenten som har id 2 har blitt slettet fra databasen.

Spring Boot H2-database
Last ned H2 Database Eksempelprosjekt