logo

Baza de date Spring Boot H2

Ce este baza de date în memorie

Baza de date în memorie se bazează pe memoria sistemului, spre deosebire de spațiul pe disc pentru stocarea datelor. Deoarece accesul la memorie este mai rapid decât accesul la disc. Folosim baza de date în memorie atunci când nu trebuie să persistăm datele. Baza de date în memorie este o bază de date încorporată. Bazele de date din memorie sunt volatile, în mod implicit, și toate datele stocate se pierd atunci când repornim aplicația.

Bazele de date în memorie utilizate pe scară largă sunt H2, HSQLDB (Bază de date HyperSQL) , și Apache Derby. Acesta creează automat configurația.

Persistență vs. Baza de date în memorie

Baza de date persistentă păstrează datele în memoria fizică. Datele vor fi disponibile chiar dacă serverul bazei de date este respins. Unele baze de date de persistență populare sunt Oracol, MySQL , Postgres , etc.

În cazul baza de date in memorie, depozit de date în memorie de sistem . A pierdut datele când programul este închis. Este de ajutor pentru MIC s (Proof of Concepts), nu pentru o aplicație de producție. Baza de date în memorie utilizată pe scară largă este H2.

Ce este baza de date H2

H2 este o încorporat, cu sursă deschisă, și in memoria Bază de date. Este un sistem de gestionare a bazelor de date relaționale scris în Java . Este un client server aplicarea. Este folosit în general în testarea unitară . Stochează datele în memorie, nu persistă datele pe disc.

Avantaje

  • Configurație zero
  • Este ușor de utilizat.
  • Este ușor și rapid.
  • Oferă o configurație simplă pentru a comuta între o bază de date reală și o bază de date în memorie.
  • Acceptă API standard SQL și JDBC.
  • Oferă o consolă web de menținut în baza de date.

Configurați baza de date H2

Dacă dorim să folosim baza de date H2 într-o aplicație, trebuie să adăugăm următoarea dependență în fișierul pom.xml:

 com.h2database h2 runtime 

După adăugarea dependenței, trebuie să configuram URL sursa de date, numele clasei de driver, numele de utilizator, și parola a bazei de date H2. Spring Boot oferă o modalitate ușoară de a configura aceste proprietăți în aplicaţie.proprietăţi fişier.

 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 

În spring.datasource.url proprietate, mem este numele unei baze de date în memorie și testdb este numele schemei pe care H2 o oferă, în mod implicit. De asemenea, putem defini propria noastră schemă și bază de date. Numele de utilizator implicit este pe iar parola goală denotă an gol parola. Dacă dorim să schimbăm numele de utilizator și parola, putem suprascrie aceste valori.

aleator fără generator în java

Persistați datele în baza de date H2

Dacă dorim să păstrăm datele în baza de date H2, ar trebui să stocăm datele într-un fișier. Pentru a realiza același lucru, trebuie să modificăm proprietatea URL a sursei de date.

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

În proprietatea de mai sus, eșantiondate este un nume de fișier.

Creați o schemă și completați datele

Putem defini schema prin crearea unui SQL dosar în resursă folder (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 ); 

Putem popula datele în tabel prin crearea unui SQL dosar în resursă folder (src/main/resource).

date.sql

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

Spring Boot preia automat date.sql fișier și rulați-l pe baza de date H2 în timpul pornirii aplicației.

Consola H2

În mod implicit, vizualizarea consolei bazei de date H2 este dezactivată. Înainte de a accesa baza de date H2, trebuie să o activăm folosind următoarea proprietate.

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

Odată ce am activat consola H2, acum putem accesa consola H2 în browser, invocând adresa URL http://localhost:8080/h2-console. Următoarea figură arată vizualizarea consolei bazei de date H2.

Baza de date Spring Boot H2

În captura de ecran de mai sus, am definit propria noastră bază de date numită javatpoint .

Spring Boot H2 Exemplu

Să instalăm o aplicație Spring Boot cu baza de date H2.

Pasul 1: Deschideți Spring Initializr http://start.spring.io .

Pasul 2: Selectați versiunea Spring Boot 2.3.0.M1.

Pasul 2: Furnizați grup Nume. Noi am asigurat com.javatpoint.

Pasul 3: Furnizați Artefact Id. Noi am asigurat spring-boot-h2-database-example.

Pasul 5: Adăugați dependențele Spring Web, Spring Data JPA , și Baza de date H2.

Pasul 6: Faceți clic pe Genera buton. Când facem clic pe butonul Generare, acesta înfășoară proiectul într-un Borcan fișier și îl descarcă în sistemul local.

Baza de date Spring Boot H2

Pasul 7: Extrage fișierul Jar și inserați-l în spațiul de lucru STS.

Pasul 8: Import folderul de proiect în STS.

Fișier -> Import -> Proiecte Maven existente -> Răsfoiți -> Selectați folderul spring-boot-h2-database-example -> Finish

umplutură np

Este nevoie de ceva timp pentru a importa.

Pasul 9: Creați un pachet cu numele com.javatpoint.model în dosar src/main/java.

Pasul 10: Creați o clasă de model în pachet com.javatpoint.model. Am creat clasa de model cu numele Student. La clasa Cărți, am făcut următoarele:

  • Definiți patru variabile id, varsta, nume, și
  • Generați Getters și Setters.
    Faceți clic dreapta pe fișier -> Source -> Generate Getters and Setters.
  • Marcați clasa ca Entitate prin utilizarea adnotării @Entitate.
  • Marcați clasa ca Masa nume folosind adnotarea @Masa.
  • Definiți fiecare variabilă ca Coloană prin utilizarea adnotării @Coloană.

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

Pasul 11: Creați un pachet cu numele com.javatpoint.controller în dosar src/main/java.

Pasul 12: Creați o clasă Controller în pachet com.javatpoint.controller . Am creat clasa de controler cu numele StudentController . În clasa StudentController, am făcut următoarele:

  • Marcați clasa ca RestController prin utilizarea adnotării @RestController.
  • Cablare automată StudentService clasa folosind adnotarea @Cablat automat .
  • Definiți următoarele metode:
      getAllStudent():Returnează o listă cu toți studenții.
  • getStudent():Returnează un detaliu student pe care l-am specificat în variabila cale. Am transmis id-ul ca argument folosind adnotarea @PathVariable. Adnotarea indică faptul că un parametru de metodă ar trebui să fie legat de o variabilă șablon URI.deleteStudent():Acesta șterge un anumit student pe care l-am specificat în variabila cale.saveStudent():Salvează detaliile studentului. Adnotarea @RequestBody indică faptul că un parametru de metodă ar trebui să fie legat de corpul cererii web.

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

Pasul 13: Creați un pachet cu numele com.javatpoint.service în dosar src/main/java.

Pasul 14: Creeaza o Serviciu clasă. Am creat o clasă de servicii cu numele StudentService in pachet 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); } } 

Pasul 15: Creați un pachet cu numele com.javatpoint.repository în dosar src/main/java.

Pasul 16: Creeaza o Repertoriu interfață. Am creat o interfață de depozit cu numele StudentRepository in pachet com.javatpoint.repository. Se extinde Depozitul de crud interfață.

StudentRepository.java

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

Acum vom configura sursa de date URL, numele clasei de șofer, numele de utilizator, și parola, în aplicaţie.proprietăţi fişier.

Pasul 17: Deschide aplicaţie.proprietăţi fișier și configurați următoarele proprietăți.

pentru buclă java

aplicaţie.proprietăţi

 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 

Notă: Nu uitați să activați consola H2.

După crearea tuturor claselor și pachetelor, directorul proiectului arată ca următorul.

Baza de date Spring Boot H2

Acum vom rula aplicația.

Pasul 18: Deschis SpringBootH2DatabaseExampleApplication.java fișier și rulați-l ca aplicație 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); } } 

În pasul următor, vom folosi rest client Poştaş pentru trimiterea POST și OBȚINE cerere . Dacă Postman nu este instalat în sistemul dvs., urmați pașii de mai jos:

Pasul 19: Deschide Poştaş și faceți următoarele:

  • Selectează POST
  • Invocați adresa URL http://localhost:8080/student.
  • Selectează Corp
  • Selectați tipul de conținut JSON (aplicație/json).
  • Introduceți datele. Am introdus următoarele date în organism:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Faceți clic pe Trimite

Când solicitarea este executată cu succes, acesta arată Stare: 200 OK . Înseamnă că înregistrarea a fost introdusă cu succes în baza de date.

În mod similar, am introdus următoarele date.

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

Să accesăm consola H2 pentru a vedea datele.

Pasul 20: Deschideți browserul și invocați adresa URL http://localhost:8080/h2-console. Faceți clic pe Conectați butonul, așa cum se arată mai jos.

Baza de date Spring Boot H2

După ce faceți clic pe Conectați butonul, vedem Student tabel din baza de date, după cum se arată mai jos.

Baza de date Spring Boot H2

Pasul 21: Faceți clic pe Student tabel și apoi faceți clic pe Alerga buton. Tabelul arată datele pe care le-am introdus în corp.

Baza de date Spring Boot H2

Pasul 22: Deschide Poștașul și trimite un OBȚINE cerere. Returnează datele pe care le-am introdus în baza de date.

Baza de date Spring Boot H2

Să trimitem un OBȚINE cerere cu adresa URL http://localhost:8080/student/{id}. Am invocat adresa URL http://localhost:8080/student/3. Returnează detaliul studentului al cărui id este 3.

traversarea comenzilor prin corespondență
Baza de date Spring Boot H2

În mod similar, putem trimite și un ȘTERGE cerere. Să presupunem că vrem să ștergem o înregistrare de student al cărei id este 2.

Pentru a șterge o fișă de student, trimiteți un ȘTERGE cerere cu adresa URL http://localhost:8080/student/2. Vedem că studentul al cărui id este 2 a fost șters din baza de date.

Baza de date Spring Boot H2
Descărcați proiectul exemplu de bază de date H2