logo

Base de dades Spring Boot H2

Què és la base de dades en memòria

La base de dades a la memòria es basa en la memòria del sistema en lloc de l'espai en disc per a l'emmagatzematge de dades. Perquè l'accés a la memòria és més ràpid que l'accés al disc. Utilitzem la base de dades en memòria quan no necessitem conservar les dades. La base de dades en memòria és una base de dades incrustada. Les bases de dades en memòria són volàtils, per defecte, i totes les dades emmagatzemades es perden quan reiniciem l'aplicació.

Les bases de dades en memòria molt utilitzades són H2, HSQLDB (base de dades HyperSQL) , i Apache Derby. Crea la configuració automàticament.

Persistència vs. Base de dades en memòria

La base de dades persistent conserva les dades a la memòria física. Les dades estaran disponibles encara que el servidor de base de dades es reboti. Algunes bases de dades de persistència populars són Oracle, MySQL , Postgres , etc.

En el cas de la base de dades en memòria, magatzem de dades al memòria del sistema . Ha perdut les dades quan es tanca el programa. És útil per POC s (Prova de conceptes), no per a una aplicació de producció. La base de dades en memòria àmpliament utilitzada és H2.

Què és la base de dades H2

H2 és un incrustat, de codi obert, i en memòria base de dades. És un sistema de gestió de bases de dades relacionals escrit Java . És un client/servidor aplicació. S'utilitza generalment en proves unitàries . Emmagatzema dades a la memòria, no conserva les dades al disc.

Avantatges

  • Configuració zero
  • És fàcil d'utilitzar.
  • És lleuger i ràpid.
  • Proporciona una configuració senzilla per canviar entre una base de dades real i una base de dades en memòria.
  • Admet l'API estàndard SQL i JDBC.
  • Proporciona una consola web per mantenir-la a la base de dades.

Configura la base de dades H2

Si volem utilitzar la base de dades H2 en una aplicació, hem d'afegir la següent dependència al fitxer pom.xml:

 com.h2database h2 runtime 

Després d'afegir la dependència, hem de configurar URL de la font de dades, nom de la classe del controlador, nom d'usuari, i contrasenya de la base de dades H2. Spring Boot ofereix una manera senzilla de configurar aquestes propietats application.properties dossier.

 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 

En el spring.datasource.url propietat, mem és el nom d'una base de dades en memòria i provadb és el nom de l'esquema que proporciona H2, per defecte. També podem definir el nostre propi esquema i base de dades. El nom d'usuari predeterminat és activat i la contrasenya en blanc indica una buit contrasenya. Si volem canviar el nom d'usuari i la contrasenya, podem anul·lar aquests valors.

Mantingueu les dades a la base de dades H2

Si volem conservar les dades a la base de dades H2, hauríem d'emmagatzemar les dades en un fitxer. Per aconseguir el mateix, hem de canviar la propietat de l'URL de la font de dades.

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

A la propietat anterior, el dades de mostra és un nom de fitxer.

Creeu un esquema i ompliu dades

Podem definir un esquema creant un SQL fitxer al recurs carpeta (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 ); 

Podem omplir dades a la taula creant un SQL fitxer al recurs carpeta (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 recull automàticament el data.sql fitxer i executeu-lo contra la base de dades H2 durant l'inici de l'aplicació.

Consola H2

Per defecte, la vista de consola de la base de dades H2 està desactivada. Abans d'accedir a la base de dades H2, l'hem d'habilitar mitjançant la propietat següent.

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

Un cop habilitat la consola H2, ara podem accedir a la consola H2 al navegador invocant l'URL http://localhost:8080/h2-console. La figura següent mostra la vista de la consola de la base de dades H2.

canviar el cas de java
Base de dades Spring Boot H2

A la captura de pantalla anterior, hem definit la nostra pròpia base de dades anomenada javatpoint .

Spring Boot H2 Exemple

Configurem una aplicació Spring Boot amb la base de dades H2.

Pas 1: Obriu Spring Initializr http://start.spring.io .

Pas 2: Seleccioneu la versió Spring Boot 2.3.0.M1.

Pas 2: Proporcioneu el Grup nom. Hem proporcionat com.javatpoint.

Pas 3: Proporcioneu el Artefacte Id. Hem proporcionat Spring-boot-h2-base de dades-exemple.

Pas 5: Afegeix les dependències Spring Web, Spring Data JPA , i Base de dades H2.

Pas 6: Feu clic a Generar botó. Quan fem clic al botó Genera, embolcalla el projecte en a Pot fitxer i el descarrega al sistema local.

Base de dades Spring Boot H2

Pas 7: Extracte el fitxer Jar i enganxeu-lo a l'espai de treball STS.

Pas 8: Importar la carpeta del projecte a STS.

alinear la imatge CSS

Fitxer -> Importa -> Projectes Maven existents -> Navega -> Seleccioneu la carpeta spring-boot-h2-database-example -> Finalitza

Es triga un temps a importar.

Pas 9: Creeu un paquet amb el nom com.javatpoint.model a la carpeta src/main/java.

Pas 10: Creeu una classe de model al paquet com.javatpoint.model. Hem creat una classe de model amb el nom Estudiant. A la classe de Llibres hem fet el següent:

  • Definiu quatre variables id, edat, nom, i
  • Genera Getters i Setters.
    Feu clic amb el botó dret al fitxer -> Font -> Genera Getters i Setters.
  • Marca la classe com a Entitat utilitzant l'anotació @Entitat.
  • Marca la classe com a Taula nom utilitzant l'anotació @Taula.
  • Defineix cada variable com Columna utilitzant l'anotació @Columna.

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

Pas 11: Creeu un paquet amb el nom com.javatpoint.controller a la carpeta src/main/java.

Pas 12: Creeu una classe de controlador al paquet com.javatpoint.controller . Hem creat una classe de controlador amb el nom StudentController . A la classe StudentController, hem fet el següent:

  • Marca la classe com a RestController utilitzant l'anotació @RestController.
  • Coneix automàticament el Servei d'Estudiants classe utilitzant l'anotació @Cablejat automàtic .
  • Definiu els mètodes següents:
      getAllStudent():Retorna una llista de tots els estudiants.
  • getStudent():Retorna un detall de l'estudiant que hem especificat a la variable de ruta. Hem passat id com a argument utilitzant l'anotació @PathVariable. L'anotació indica que un paràmetre de mètode s'ha d'enllaçar a una variable de plantilla URI.deleteStudent():Elimina un estudiant específic que hem especificat a la variable de ruta.saveStudent():Desa els detalls de l'alumne. L'anotació @RequestBody indica que un paràmetre de mètode s'ha d'enllaçar al cos de la sol·licitud 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(); } } 

Pas 13: Creeu un paquet amb el nom com.javatpoint.service a la carpeta src/main/java.

Pas 14: Crea un Servei classe. Hem creat una classe de servei amb el nom Servei d'Estudiants al paquet 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); } } 

Pas 15: Creeu un paquet amb el nom com.javatpoint.repository a la carpeta src/main/java.

Pas 16: Crea un Repositori interfície. Hem creat una interfície de repositori amb el nom Repositori d'estudiants al paquet com.javatpoint.repository. S'estén el Repositori de cru interfície.

StudentRepository.java

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

Ara configurarem la font de dades URL, nom de classe de controlador, nom d'usuari, i contrasenya, en el application.properties dossier.

Pas 17: Obriu el application.properties fitxer i configureu les propietats següents.

application.properties

 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 

Nota: no oblideu habilitar la consola H2.

Després de crear totes les classes i paquets, el directori del projecte té l'aspecte següent.

Base de dades Spring Boot H2

Ara executarem l'aplicació.

Pas 18: Obert SpringBootH2DatabaseExampleApplication.java fitxer i executeu-lo com a aplicació Java.

invertint la cadena en 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); } } 

En el següent pas, utilitzarem rest client Carter per enviar el PUBLICACIÓ i ACONSEGUIR petició . Si el Postman no està instal·lat al vostre sistema, seguiu els passos següents:

Pas 19: Obriu el Carter i fes el següent:

  • Seleccioneu el PUBLICACIÓ
  • Invoqueu l'URL http://localhost:8080/student.
  • Seleccioneu el Cos
  • Seleccioneu el tipus de contingut JSON (aplicació/json).
  • Insereix les dades. Hem inserit les dades següents al cos:
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Feu clic a Enviar

Quan la sol·licitud s'executa correctament, mostra el fitxer Estat: 200 OK . Significa que el registre s'ha inserit correctament a la base de dades.

De la mateixa manera, hem inserit les dades següents.

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

Accedim a la consola H2 per veure les dades.

Pas 20: Obriu el navegador i invoqueu l'URL http://localhost:8080/h2-console. Feu clic a Connecta't botó, com es mostra a continuació.

Base de dades Spring Boot H2

Després de fer clic a Connecta't botó, veiem el Estudiant taula a la base de dades, tal com es mostra a continuació.

Base de dades Spring Boot H2

Pas 21: Feu clic a Estudiant taula i després feu clic a Correr botó. La taula mostra les dades que hem inserit al cos.

Base de dades Spring Boot H2

Pas 22: Obriu el carter i envieu un ACONSEGUIR petició. Retorna les dades que hem inserit a la base de dades.

Base de dades Spring Boot H2

Enviem un ACONSEGUIR sol·licitud amb l'URL http://localhost:8080/student/{id}. Hem invocat l'URL http://localhost:8080/student/3. Retorna el detall de l'estudiant el identificador del qual és 3.

Base de dades Spring Boot H2

De la mateixa manera, també podem enviar un ELIMINAR petició. Suposem que volem suprimir un registre d'estudiant l'identificador del qual és 2.

Per suprimir un registre d'estudiant, envieu un ELIMINAR sol·licitud amb l'URL http://localhost:8080/student/2. Veiem que l'estudiant del qual és id 2 s'ha esborrat de la base de dades.

Base de dades Spring Boot H2
Descarrega el projecte d'exemple de base de dades H2