[JAVA] Comment utiliser h2db intégré avec Spring Boot

1.Tout d'abord

Pour diverses raisons, j'ai décidé de créer une application Web Spring Boot. À ce moment-là, j'ai décidé d'utiliser le h2db intégré, j'ai donc résumé les problèmes et les enquêtes à ce moment-là. À propos, la version de la botte à ressort est "1.5.17" de 1 série.

2. Ajoutez une dépendance à pom.xml

Ajoutez spring-boot-starter-jdbc et h2 à la dépendance de pom.xml. Lors de la création d'un projet avec Spring Initializr, il en sera de même si vous ajoutez les deux suivants.

Dépendances à ajouter


<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>

3. Ajoutez des paramètres à application.properties (.yml)

Ajoutez les paramètres suivants à application.properties ou application.yml. Les paramètres sont les trois suivants.

src/main/resources/application.propertie


# datasource
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:./h2db/sampledb
spring.datasource.username=username
spring.datasource.password=password

# connection pool use tomcat
spring.datasource.tomcat.maxActive=10
spring.datasource.tomcat.maxIdle=10
spring.datasource.tomcat.minIdle=10
spring.datasource.tomcat.initialSize=10
spring.datasource.tomcat.defaultAutoCommit=false

# h2 for debug tool
# spring.h2.console.enabled=true
# spring.h2.console.path=/h2-console
# spring.h2.console.settings.web-allow-others=true

Le contenu de chaque paramètre est décrit dans Explication of application.properties of official guidelines. Je vais. Les points sont expliqués ci-dessous.

Utiliser le pool de connexions uniquement comme pool

spring.datasource.tomcat.*= # Tomcat datasource specific settings Puisqu'il y en a, j'ai défini driverClass, url, username, password ainsi que la définition de la source de données de Tomcat, et supprimé spring.datasource.url etc. Cela semble inutile. Il semble correct de le définir uniquement comme une piscine.

DB embarquée, c'est-à-dire le même processus JVM, mais vous avez besoin d'un pool? Je suis sûr que certaines personnes le pensent, mais l'auteur est également en sueur. Je l'ai défini car il est nécessaire pour les applications Web générales. L'effet de ne pas mesurer la performance est inconnu.

Erreur


# datasource
# nothing see connection pool

# connection pool use tomcat
spring.datasource.tomcat.driver-class-name=org.h2.Driver
spring.datasource.tomcat.url=jdbc:h2:./h2db/sampledb
spring.datasource.tomcat.username=username
spring.datasource.tomcat.password=password
spring.datasource.tomcat.maxActive=10
spring.datasource.tomcat.maxIdle=10
spring.datasource.tomcat.minIdle=10
spring.datasource.tomcat.initialSize=10
spring.datasource.tomcat.defaultAutoCommit=false

Utilisez les fonctions pratiques de h2 pour le débogage

Vous pouvez également utiliser la fonction de gestion Web de h2 avec le DB intégré. La base de données intégrée s'exécute dans le même processus JVM que l'application, et comme il s'agit d'une base de données dédiée et ne peut pas être connectée au réseau, il était difficile à déboguer. Vous pouvez utiliser la fonction de gestion Web pour consulter ou modifier les données du DB actuel.

# h2 for debug tool
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.web-allow-others=true

Puisqu'il s'agit d'une fonction de débogage, il est préférable de l'activer dans les propriétés système au lieu de la définir dans application.propeties. Dans ce cas, même si vous oubliez de modifier le fichier de paramètres, vous pouvez être assuré que la fonction de débogage restera désactivée.

java -jar your-app.jar -Dspring.h2.console.enabled=true -Dspring.h2.console.path=/h2-console -Dspring.h2.console.settings.web-allow-others=true

À propos, spring.h2.console.settings.web-allow-others indique s'il faut autoriser l'accès depuis un emplacement distant (un autre PC). La valeur par défaut «false» n'est accessible que localement, c'est-à-dire à partir du PC exécutant l'application.

4. Préparation des bases de données et des tables

h2db est une base de données en mémoire, mais les données peuvent être conservées dans une base de données intégrée. Cela signifie que ce serait un problème s'il était initialisé à chaque démarrage.

5. jdbcTemplate, la source de données et le contrôle des transactions sont définis automatiquement

Si vous utilisez springframework tel quel, divers paramètres (définition de Bean, AOP, etc.) requis pour l'accès à la base de données sont nécessaires, mais dans le cas d'un démarrage à ressort, ils sont définis automatiquement.

6. Enfin

Cette fois, j'ai résumé les problèmes et les recherches sur la façon d'utiliser le h2db intégré dans l'application Web de démarrage pring. Quand je l'ai essayé, j'ai été surpris car il y avait moins de paramètres que ce à quoi je m'attendais. En ce sens, la botte à ressort est facile.

Recommended Posts

Comment utiliser h2db intégré avec Spring Boot
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser ModelMapper (Spring boot)
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Utiliser Spring JDBC avec Spring Boot
Accédez au h2db intégré de Spring Boot avec jdbcTemplate
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Comment démarrer par environnement avec Spring Boot de Maven
Comment utiliser Lombok au printemps
Utiliser l'authentification de base avec Spring Boot
Remarques sur l'utilisation de Spring Data JDBC
Comment configurer Spring Boot + PostgreSQL
Comment utiliser mssql-tools avec Alpine
À partir de Spring Boot 0. Utilisez Spring CLI
Comment appeler et utiliser l'API en Java (Spring Boot)
Comment diviser un fichier de message Spring Boot
Utiliser le cache avec EhCashe 2.x avec Spring Boot
Comment créer votre propre contrôleur correspondant à / error avec Spring Boot
Comment utiliser la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
Comment appliquer immédiatement les modifications de Thymeleaf au navigateur avec #Spring Boot + maven
Comment utiliser rbenv
Comment lire le corps de la requête plusieurs fois avec Spring Boot + Spring Security
Comment utiliser with_option
Comment utiliser java.util.logging
Comment utiliser la carte
Comment réduire l'image de Spring Boot Docker
Vous utilisez le contexte pour utiliser MDC avec Spring WebFlux
Comment utiliser collection_select
Comment utiliser le framework Java avec AWS Lambda! ??
Essayez d'implémenter la fonction de connexion avec Spring Boot
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment ajouter un chemin de classe dans Spring Boot
Comment utiliser TreeSet
Comment utiliser l'API Java avec des expressions lambda
[Comment utiliser l'étiquette]
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser le protocole NFS version 2 avec Ubuntu 18.04
Comment se lier avec un fichier de propriétés dans Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
[Spring Boot] Comment se référer au fichier de propriétés
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Télécharger avec Spring Boot
Spring Boot - Comment définir le délai d'expiration de la session
Comment utiliser Map
Comment effectuer UT avec Excel en tant que données de test avec Spring Boot + JUnit5 + DBUnit