logo

Spring Boot H2 Database

Hvad er databasen i hukommelsen

In-memory database er afhængig af systemhukommelse i modsætning til diskplads til lagring af data. Fordi hukommelsesadgang er hurtigere end diskadgang. Vi bruger in-memory-databasen, når vi ikke behøver at bevare dataene. In-memory-databasen er en indlejret database. Databaserne i hukommelsen er som standard flygtige, og alle lagrede data tabes, når vi genstarter applikationen.

De meget anvendte in-memory databaser er H2, HSQLDB (HyperSQL-database) , og Apache Derby. Det opretter konfigurationen automatisk.

Persistens vs. In-memory Database

Den vedvarende database bevarer dataene i den fysiske hukommelse. Dataene vil være tilgængelige, selvom databaseserveren afvises. Nogle populære persistensdatabaser er Oracle, MySQL , Postgres , etc.

I tilfælde af in-memory database, datalager i systemhukommelse . Den mistede dataene, da programmet blev lukket. Det er nyttigt for LILLE s (Proof of Concepts), ikke til en produktionsapplikation. Den meget brugte in-memory database er H2.

Hvad er H2-databasen

H2 er en indlejret, open source, og i hukommelsen database. Det er et relationelt databasestyringssystem skrevet i Java . Det er en klient/server Ansøgning. Det bruges generelt i enhedstest . Det gemmer data i hukommelsen, ikke bevarer dataene på disken.

Fordele

  • Nul konfiguration
  • Den er nem at bruge.
  • Den er let og hurtig.
  • Det giver enkel konfiguration til at skifte mellem en rigtig database og en database i hukommelsen.
  • Det understøtter standard SQL og JDBC API.
  • Det giver en webkonsol til at vedligeholde i databasen.

Konfigurer H2-database

Hvis vi vil bruge H2-databasen i en applikation, skal vi tilføje følgende afhængighed i filen pom.xml:

 com.h2database h2 runtime 

Efter at have tilføjet afhængigheden, skal vi konfigurere datakilde-URL, førerklassenavn, brugernavn, og adgangskode af H2 database. Spring Boot giver en nem måde at konfigurere disse egenskaber på applikationsegenskaber fil.

string.replaceall i java
 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 den spring.datasource.url ejendom, mem er navnet på en database i hukommelsen og testdb er navnet på det skema, som H2 leverer som standard. Vi kan også definere vores eget skema og database. Standardbrugernavnet er og den tomme adgangskode angiver en tom adgangskode. Hvis vi ønsker at ændre brugernavn og adgangskode, kan vi tilsidesætte disse værdier.

Bevar dataene i H2-databasen

Hvis vi ønsker at bevare dataene i H2-databasen, bør vi gemme data i en fil. For at opnå det samme skal vi ændre datakildens URL-egenskab.

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

I ovennævnte ejendom er prøvedata er et filnavn.

Opret skema og udfyld data

Vi kan definere skema ved at oprette en SQL fil i ressource mappe (src/main/ressource).

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 udfylde data i tabellen ved at oprette en SQL fil i ressource mappe (src/main/ressource).

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 opfanger automatisk data.sql fil og kør den mod H2-databasen under applikationsstart.

H2 konsol

Som standard er konsolvisningen af ​​H2-databasen deaktiveret. Før vi får adgang til H2-databasen, skal vi aktivere den ved at bruge følgende egenskab.

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

Når vi har aktiveret H2-konsollen, kan vi nu få adgang til H2-konsollen i browseren ved at kalde URL'en http://localhost:8080/h2-console. Følgende figur viser konsolvisningen af ​​H2-databasen.

Spring Boot H2 Database

I ovenstående skærmbillede har vi defineret vores egen database ved navn javatpoint .

Eksempel på fjederstøvle H2

Lad os opsætte en Spring Boot-applikation med H2-databasen.

Trin 1: Åbn Spring Initializr http://start.spring.io.

Trin 2: Vælg Spring Boot-versionen 2.3.0.M1.

java enums

Trin 2: Giv den Gruppe navn. Vi har ydet com.javatpoint.

Trin 3: Giv den Artefakt Id. Vi har ydet spring-boot-h2-database-eksempel.

Trin 5: Tilføj afhængighederne Spring Web, Spring Data JPA, og H2 Database.

Trin 6: Klik på Frembringe knap. Når vi klikker på knappen Generer, omslutter det projektet i en Krukke fil og downloader den til det lokale system.

Spring Boot H2 Database

Trin 7: Uddrag Jar-filen og indsæt den i STS-arbejdsområdet.

Trin 8: Importere projektmappen til STS.

Fil -> Importer -> Eksisterende Maven-projekter -> Gennemse -> Vælg mappen spring-boot-h2-database-example -> Afslut

Det tager lidt tid at importere.

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

Trin 10: Opret en modelklasse i pakken com.javatpoint.model. Vi har lavet modelklasse med navnet Studerende. I klassen Bøger har vi gjort følgende:

  • Definer fire variable id, alder, navn, og
  • Generer Getters og Settere.
    Højreklik på filen -> Kilde -> Generer Getters and Setters.
  • Marker klassen som Enhed ved at bruge anmærkningen @Enhed.
  • Marker klassen som Bord navn ved hjælp af annoteringen @Bord.
  • Definer hver variabel som Kolonne ved at bruge anmærkningen @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; } } 

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

hvad er orakel

Trin 12: Opret en Controller-klasse i pakken com.javatpoint.controller . Vi har lavet controller klasse med navnet StudentController . I StudentController-klassen har vi gjort følgende:

  • Marker klassen som RestController ved at bruge anmærkningen @RestController.
  • Autowire den Studenterservice klasse ved at bruge anmærkningen @Autowired .
  • Definer følgende metoder:
      getAllStudent():Det returnerer en liste over alle elever.
  • getStudent():Det returnerer en elevdetalje, som vi har angivet i stivariablen. Vi har videregivet id som et argument ved at bruge annotationen @PathVariable. Annoteringen angiver, at en metodeparameter skal være bundet til en URI-skabelonvariabel.slet Student():Den sletter en specifik elev, som vi har angivet i stivariablen.saveStudent():Det gemmer elevens detaljer. Annotationen @RequestBody angiver, at en metodeparameter skal være bundet til web-anmodningens brødtekst.

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

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

Trin 14: Lave en Service klasse. Vi har lavet en serviceklasse med navnet Studenterservice 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); } } 

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

Trin 16: Lave en Depot interface. Vi har lavet en lagergrænseflade med navnet StudentRepository i pakken com.javatpoint.repository. Det udvider Crud Repository interface.

StudentRepository.java

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

Nu vil vi konfigurere datakilden URL, førerklassenavn, brugernavn, og adgangskode, i applikationsegenskaber fil.

Trin 17: Åbn applikationsegenskaber fil og konfigurer følgende egenskaber.

applikationsegenskaber

hvordan man fjerner det første tegn i excel
 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 

Bemærk: Glem ikke at aktivere H2-konsollen.

Efter at have oprettet alle klasser og pakker, ser projektmappen ud som følgende.

Spring Boot H2 Database

Nu kører vi applikationen.

Trin 18: Åben SpringBootH2DatabaseExampleApplication.java fil og kør den som Java-applikation.

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 næste trin vil vi bruge hvileklient Postbud for at sende STOLPE og anmodning . Hvis Postman ikke er installeret i dit system, skal du følge nedenstående trin:

Trin 19: Åbn Postbud og gør følgende:

  • Vælg STOLPE
  • Kald URL'en http://localhost:8080/student.
  • Vælg Legeme
  • Vælg indholdstypen JSON (applikation/json).
  • Indsæt dataene. Vi har indsat følgende data i kroppen:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Klik på Sende

Når anmodningen er udført, viser den Status: 200 OK . Det betyder, at posten er blevet indsat i databasen.

Tilsvarende har vi indsat 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]' } 

Lad os få adgang til H2-konsollen for at se dataene.

Trin 20: Åbn browseren og kald URL'en http://localhost:8080/h2-console. Klik på Forbinde knappen, som vist nedenfor.

Spring Boot H2 Database

Efter at have klikket på Forbinde knappen, ser vi Studerende tabel i databasen, som vist nedenfor.

Spring Boot H2 Database

Trin 21: Klik på Studerende tabel, og klik derefter på Løb knap. Tabellen viser de data, som vi har indsat i kroppen.

forekomst af
Spring Boot H2 Database

Trin 22: Åbn postbudet og send en anmodning. Det returnerer de data, som vi har indsat i databasen.

Spring Boot H2 Database

Lad os sende en anmodning med URL'en http://localhost:8080/student/{id}. Vi har kaldt URL'en http://localhost:8080/student/3. Det returnerer detaljerne for den elev, hvis id er 3.

Spring Boot H2 Database

Tilsvarende kan vi også sende en SLET anmodning. Antag, at vi ønsker at slette en elevpost, hvis id er 2.

For at slette en elevrekord skal du sende en SLET anmodning med URL'en http://localhost:8080/student/2. Vi ser, at den elev, hvis id er 2 er blevet slettet fra databasen.

Spring Boot H2 Database
Download H2 Database Eksempel Projekt