logo

Base de données Spring Boot H2

Qu'est-ce que la base de données en mémoire

La base de données en mémoire repose sur la mémoire système et non sur l'espace disque pour le stockage des données. Parce que l'accès à la mémoire est plus rapide que l'accès au disque. Nous utilisons la base de données en mémoire lorsque nous n'avons pas besoin de conserver les données. La base de données en mémoire est une base de données intégrée. Les bases de données en mémoire sont volatiles, par défaut, et toutes les données stockées sont perdues lorsque nous redémarrons l'application.

Les bases de données en mémoire largement utilisées sont H2, HSQLDB (Base de données HyperSQL) , et Apache Derby. Il crée automatiquement la configuration.

Persistance et base de données en mémoire

La base de données persistante conserve les données dans la mémoire physique. Les données seront disponibles même si le serveur de base de données est renvoyé. Certaines bases de données de persistance populaires sont Oracle, MySQL , Postgres , etc.

Dans le cas du base de données en mémoire, magasin de données dans le mémoire système . Il a perdu les données à la fermeture du programme. C'est utile pour PETIT s (Preuve de Concepts), pas pour une application de production. La base de données en mémoire largement utilisée est H2.

remplacer en java

Qu'est-ce que la base de données H2

H2 est un embarqué, open source, et en mémoire base de données. Il s'agit d'un système de gestion de base de données relationnelle écrit en Java . C'est un serveur client application. Il est généralement utilisé dans tests unitaires . Il stocke les données en mémoire et ne les conserve pas sur le disque.

Avantages

  • Zéro configuration
  • C'est facile a utiliser.
  • Il est léger et rapide.
  • Il fournit une configuration simple pour basculer entre une base de données réelle et une base de données en mémoire.
  • Il prend en charge les API SQL et JDBC standard.
  • Il fournit une console Web à maintenir dans la base de données.

Configurer la base de données H2

Si nous voulons utiliser la base de données H2 dans une application, nous devons ajouter la dépendance suivante dans le fichier pom.xml :

 com.h2database h2 runtime 

Après avoir ajouté la dépendance, nous devons configurer URL de la source de données, nom de la classe du pilote, nom d'utilisateur, et mot de passe de la base de données H2. Spring Boot fournit un moyen simple de configurer ces propriétés dans application.propriétés déposer.

 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 

Dans le spring.datasource.url propriété, moi est le nom d'une base de données en mémoire et base de données de test est le nom du schéma fourni par H2, par défaut. Nous pouvons également définir notre propre schéma et base de données. Le nom d'utilisateur par défaut est sur et le mot de passe vide indique un vide mot de passe. Si nous souhaitons modifier le nom d'utilisateur et le mot de passe, nous pouvons remplacer ces valeurs.

Conserver les données dans la base de données H2

Si nous voulons conserver les données dans la base de données H2, nous devons stocker les données dans un fichier. Pour obtenir le même résultat, nous devons modifier la propriété URL de la source de données.

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

Dans la propriété ci-dessus, le données d'échantillon est un nom de fichier.

Créer un schéma et remplir des données

Nous pouvons définir un schéma en créant un SQL fichier dans le Ressource dossier (src/main/resource).

schéma.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 ); 

Nous pouvons remplir les données dans le tableau en créant un SQL fichier dans le Ressource dossier (src/main/resource).

données.sql

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

Spring Boot récupère automatiquement le données.sql et exécutez-le sur la base de données H2 lors du démarrage de l'application.

Console H2

Par défaut, la vue console de la base de données H2 est désactivée. Avant d'accéder à la base de données H2, nous devons l'activer en utilisant la propriété suivante.

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

Une fois que nous avons activé la console H2, nous pouvons désormais accéder à la console H2 dans le navigateur en appelant l'URL http://localhost:8080/h2-console. La figure suivante montre la vue console de la base de données H2.

Base de données Spring Boot H2

Dans la capture d'écran ci-dessus, nous avons défini notre propre base de données nommée point java .

Exemple de démarrage Spring H2

Configurons une application Spring Boot avec la base de données H2.

Étape 1: Ouvrez Spring Initializr http://start.spring.io .

Étape 2: Sélectionnez la version Spring Boot 2.3.0.M1.

Étape 2: Fournir le Groupe nom. Nous avons fourni com.javatpoint.

Étape 3: Fournir le Artefact Identifiant. Nous avons fourni spring-boot-h2-database-exemple.

numéro java à chaîne

Étape 5 : Ajouter les dépendances Spring Web, Spring DataJPA, et Base de données H2.

Étape 6 : Clique sur le Générer bouton. Lorsque nous cliquons sur le bouton Générer, le projet est enveloppé dans un Pot fichier et le télécharge sur le système local.

Base de données Spring Boot H2

Étape 7 : Extrait le fichier Jar et collez-le dans l'espace de travail STS.

Étape 8 : Importer le dossier du projet dans STS.

Fichier -> Importer -> Projets Maven existants -> Parcourir -> Sélectionnez le dossier spring-boot-h2-database-example -> Terminer

L'importation prend un certain temps.

Étape 9 : Créez un package avec le nom com.javatpoint.model dans le dossier src/main/java.

Étape 10 : Créer une classe de modèle dans le package com.javatpoint.model. Nous avons créé une classe de modèle avec le nom Étudiant. Dans la classe Livres, nous avons effectué les opérations suivantes :

  • Définir quatre variables pièce d'identité, âge, nom, et
  • Générez des getters et des setters.
    Faites un clic droit sur le fichier -> Source -> Générer des getters et des setters.
  • Marquez la classe comme Entité en utilisant l'annotation @Entité.
  • Marquez la classe comme Tableau nom en utilisant l'annotation @Tableau.
  • Définissez chaque variable comme Colonne en utilisant l'annotation @Colonne.

Étudiant.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; } } 

Étape 11 : Créez un package avec le nom com.javatpoint.controller dans le dossier src/main/java.

Étape 12 : Créer une classe Controller dans le package com.javatpoint.controller . Nous avons créé une classe de contrôleur avec le nom ÉtudiantContrôleur . Dans la classe StudentController, nous avons effectué les opérations suivantes :

  • Marquez la classe comme RestController en utilisant l'annotation @RestController.
  • Câblage automatique du Service aux étudiants classe en utilisant l'annotation @Autowired .
  • Définissez les méthodes suivantes :
      getAllStudent() :Il renvoie une liste de tous les étudiants.
  • getÉtudiant() :Il renvoie un détail de l'étudiant que nous avons spécifié dans la variable path. Nous avons passé id comme argument en utilisant l'annotation @PathVariable. L'annotation indique qu'un paramètre de méthode doit être lié à une variable de modèle URI.deleteStudent() :Il supprime un étudiant spécifique que nous avons spécifié dans la variable path.saveStudent() :Il enregistre les détails de l'étudiant. L'annotation @RequestBody indique qu'un paramètre de méthode doit être lié au corps de la requête 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(); } } 

Étape 13 : Créez un package avec le nom com.javatpoint.service dans le dossier src/main/java.

Étape 14 : Créer un Service classe. Nous avons créé une classe de service avec le nom Service aux étudiants dans le paquet com.javatpoint.service.

StudentService.java

convertir un caractère en chaîne 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); } } 

Étape 15 : Créez un package avec le nom com.javatpoint.repository dans le dossier src/main/java.

Étape 16 : Créer un Dépôt interface. Nous avons créé une interface de référentiel avec le nom Référentiel des étudiants dans le paquet com.javatpoint.repository. Il prolonge le Dépôt de brut interface.

StudentRepository.java

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

Nous allons maintenant configurer la source de données URL, nom de classe de pilote, nom d'utilisateur, et mot de passe, dans le application.propriétés déposer.

Étape 17 : Ouvrez le application.propriétés et configurez les propriétés suivantes.

application.propriétés

 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 

Remarque : N'oubliez pas d'activer la console H2.

Après avoir créé toutes les classes et packages, le répertoire du projet ressemble à ceci.

Base de données Spring Boot H2

Nous allons maintenant exécuter l'application.

Étape 18 : Ouvrir SpringBootH2DatabaseExampleApplication.java fichier et exécutez-le en tant qu’application Java.

SpringBootH2DatabaseExampleApplication.java

noeud de liste 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); } } 

Dans la prochaine étape, nous utiliserons rest client Facteur pour l'envoi du POSTE et OBTENIR demande . Si Postman n'est pas installé sur votre système, suivez les étapes ci-dessous :

  • Téléchargez le facteur depuis https://www.getpostman.com/downloads/ ou ajoutez l'extension Google Chrome dans le navigateur https://bit.ly/1HCOCwF .
  • Lancez le facteur et S'inscrire . Créer un nom d'utilisateur. Nous avons créé un utilisateur avec le nom point java et j'ai cliqué sur Soumettre

Étape 19 : Ouvrez le Facteur et procédez comme suit :

  • Sélectionnez le POSTE
  • Appelez l'URL http://localhost:8080/student.
  • Sélectionnez le Corps
  • Sélectionnez le type de contenu JSON (application/json).
  • Insérez les données. Nous avons inséré les données suivantes dans le corps :
 { 'id': '001', 'age': '23', 'name': 'Amit', 'email': '[email protected]' } 
  • Clique sur le Envoyer

Lorsque la requête est exécutée avec succès, elle affiche le Statut : 200 OK . Cela signifie que l'enregistrement a été inséré avec succès dans la base de données.

De même, nous avons inséré les données suivantes.

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

Accédons à la console H2 pour voir les données.

Étape 20 : Ouvrez le navigateur et appelez l'URL http://localhost:8080/h2-console. Clique sur le Connecter bouton, comme indiqué ci-dessous.

Base de données Spring Boot H2

Après avoir cliqué sur le Connecter bouton, nous voyons le Étudiant table dans la base de données, comme indiqué ci-dessous.

Base de données Spring Boot H2

Étape 21 : Clique sur le Étudiant tableau puis cliquez sur le Courir bouton. Le tableau montre les données que nous avons insérées dans le corps.

Base de données Spring Boot H2

Étape 22 : Ouvrez le Postman et envoyez un OBTENIR demande. Il renvoie les données que nous avons insérées dans la base de données.

Base de données Spring Boot H2

Envoyons un OBTENIR demande avec l'URL http://localhost:8080/student/{id}. Nous avons invoqué l'URL http://localhost:8080/student/3. Il renvoie le détail de l'étudiant dont l'identifiant est 3.

Base de données Spring Boot H2

De même, nous pouvons également envoyer un SUPPRIMER demande. Supposons que nous souhaitions supprimer un dossier d'étudiant dont l'identifiant est 2.

Pour supprimer un dossier étudiant, envoyez un SUPPRIMER demande avec l’URL http://localhost:8080/student/2. Nous voyons que l'étudiant dont l'identifiant est 2 a été supprimé de la base de données.

Base de données Spring Boot H2
Télécharger un exemple de projet de base de données H2