[JAVA] Verwendung des eingebauten h2db mit Federstiefel

1. Zuallererst

Aus verschiedenen Gründen habe ich mich für eine Spring Boot-Webanwendung entschieden. Zu dieser Zeit entschied ich mich für die integrierte h2db, also fasste ich die Probleme und Untersuchungen zu dieser Zeit zusammen. Übrigens ist die Version von Spring Boot "1.5.17" von 1 Serie.

2. Fügen Sie pom.xml eine Abhängigkeit hinzu

Fügen Sie den Abhängigkeiten von pom.xml spring-boot-Starter-jdbc und h2 hinzu. Wenn Sie ein Projekt mit Spring Initializr erstellen, ist es dasselbe, wenn Sie die folgenden zwei hinzufügen.

Abhängigkeiten hinzufügen


<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. Fügen Sie den application.properties (.yml) Einstellungen hinzu.

Fügen Sie application.properties oder application.yml die folgenden Einstellungen hinzu.

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

Der Inhalt jeder Einstellung wird unter Erläuterung der Anwendungseigenschaften der offiziellen Richtlinien beschrieben. Ich werde. Die Punkte werden unten erklärt.

Verwenden Sie den Verbindungspool nur als Pool

spring.datasource.tomcat.*= # Tomcat datasource specific settings Da dies der Fall ist, habe ich "driverClass, url, username, password" sowie die Definition der Datenquelle von Tomcat definiert und "spring.datasource.url" usw. gelöscht. Dies scheint nutzlos zu sein. Es scheint richtig, es nur als Pool zu definieren.

Embedded DB, also der gleiche JVM-Prozess, aber benötigen Sie einen Pool? Ich bin sicher, einige Leute denken das, aber der Autor ist auch verschwitzt. Ich habe es eingestellt, weil es für allgemeine Webanwendungen notwendig ist. Der Effekt, die Leistung nicht zu messen, ist unbekannt.

Error


# 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

Verwenden Sie die praktischen Funktionen von h2 zum Debuggen

Sie können auch die Webverwaltungsfunktion von h2 mit der eingebetteten Datenbank verwenden. Die eingebettete Datenbank wird im selben JVM-Prozess wie die App ausgeführt. Da es sich um eine dedizierte Datenbank handelt und keine Verbindung zum Netzwerk hergestellt werden kann, war das Debuggen schwierig.

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

Da es sich um eine Debug-Funktion handelt, ist es besser, sie in den Systemeigenschaften zu aktivieren, als sie in application.propeties festzulegen. In diesem Fall können Sie sicher sein, dass die Debug-Funktion deaktiviert bleibt, auch wenn Sie vergessen, die Einstellungsdatei zu ändern.

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

Übrigens ist "spring.h2.console.settings.web-allow-Others", ob der Zugriff von einem entfernten Standort (einem anderen PC) aus zugelassen werden soll. Auf die Standardeinstellung "false" kann nur lokal zugegriffen werden, dh vom PC aus, auf dem die App ausgeführt wird.

4. DB- und Tischvorbereitung

h2db ist eine speicherinterne Datenbank, aber Daten können in einer eingebetteten Datenbank beibehalten werden. Dies bedeutet, dass es ein Problem wäre, wenn es bei jedem Start initialisiert würde.

5. jdbcTemplate, Datenquelle und Transaktionssteuerung werden automatisch festgelegt

Wenn Sie springframework so wie es ist verwenden, sind verschiedene Einstellungen (Bean-Definition, AOP usw.) erforderlich, die für den DB-Zugriff erforderlich sind. Beim Spring-Boot werden sie jedoch automatisch festgelegt.

6. Schließlich

Dieses Mal habe ich die Probleme und Untersuchungen zur Verwendung des integrierten h2db in der Pring-Boot-Webanwendung zusammengefasst. Als ich es tatsächlich ausprobierte, war ich überrascht, weil es weniger Einstellungen gab als ich erwartet hatte. In diesem Sinne ist der Federstiefel einfach.

Recommended Posts

Verwendung des eingebauten h2db mit Federstiefel
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung von ModelMapper (Spring Boot)
Verwendung von Spring Boot-Sitzungsattributen (@SessionAttributes)
Verwenden Sie Spring JDBC mit Spring Boot
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Booten nach Umgebung mit Spring Boot of Maven
Wie man Lombok im Frühling benutzt
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Hinweise zur Verwendung von Spring Data JDBC
So stellen Sie Spring Boot + PostgreSQL ein
Wie man mssql-tools mit alpine benutzt
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Aufrufen und Verwenden der API in Java (Spring Boot)
So teilen Sie eine Spring Boot-Nachrichtendatei
Verwenden Sie den Cache mit EhCashe 2.x mit Spring Boot
So erstellen Sie mit Spring Boot einen eigenen Controller, der / error entspricht
Verwendung derselben Mapper-Klasse in mehreren Datenquellen mit Spring Boot + MyBatis
So wenden Sie Thymeleaf-Änderungen sofort mit #Spring Boot + maven auf den Browser an
Wie benutzt man rbenv?
So lesen Sie Request Body mit Spring Boot + Spring Security mehrmals
Verwendung mit_option
Verwendung von java.util.logging
Verwendung der Karte
So verkleinern Sie das Spring Boot Docker-Image
Sie verwenden den Kontext, um MDC mit Spring WebFlux zu verwenden
Verwendung von collection_select
Verwendung des Java-Frameworks mit AWS Lambda! ??
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Wie benutzt man Twitter4J
Wie benutzt man active_hash! !!
Verwendung von MapStruct
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Verwendung von TreeSet
Verwendung der Java-API mit Lambda-Ausdrücken
[Verwendung des Etiketts]
Wie man Identität benutzt
Wie man Hash benutzt
Verwendung des NFS-Protokolls Version 2 mit Ubuntu 18.04
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Ich wollte Spring Boot in einem Multiprojekt gradle
Verwendung von Dozer.mapper
Wie benutzt man Gradle?
Verwendung von org.immutables
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
Verwendung von java.util.stream.Collector
Verwendung von VisualVM
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Mit Spring Boot herunterladen
Spring Boot - So stellen Sie das Sitzungszeitlimit ein
Verwendung von Map
So führen Sie UT mit Excel als Testdaten mit Spring Boot + JUnit5 + DBUnit durch