English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring Boot JDBC bietet Starter und Bibliotheken für die Verbindung der Anwendung mit JDBC.
In Spring Boot JDBC, mit Bezug auf Datenbanken (z.B. DataSource, JdbcTemplate und NamedParameterJdbcTemplate ) wird während des Startvorgangs automatisch konfiguriert und erstellt. Wenn wir sie verwenden möchten, können wir diese Klassen automatisch装配en. Zum Beispiel:
@Autowired JdbcTemplate jdbcTemplate; @Autowired private NamedParameterJdbcTemplate jdbcTemplate;
in application.properties Datei, wir konfigurieren DataSource und Connection Pool. Spring Boot wählt standardmäßig tomcat Pools.
JDBC Connection Poolist eine Verwaltung mehrereMechanismus für Anfragen nach Datenbankverbindungen. Mit anderen Worten, es fördert die Wiederverwendung von Verbindungen, d.h. die Speichercache für Datenbankverbindungen, die als Connection Pool. Der Connection Pool Module hält es als eine Ebene über jeder Standard JDBC-Treiberprodukt.
Es kann die Geschwindigkeit des Datenzugriffs verbessern und die Anzahl der Datenbankverbindungen der Anwendung reduzieren. Es kann auch die Leistung der Anwendung verbessern. Der Connection Pool führt folgende Aufgaben aus:
Verfügbare Verbindungen verwalten Neue Verbindung zuweisen Verbindung schließen
In der Abbildung oben gibt es Client, ein Poolsystem(mit vier verfügbaren Verbindungen) und 1Datenquellen.
In der ersten Abbildung haben drei Client-Verbindungen verschiedene Verbindungen verbunden, und die Verbindungen sind verfügbar. In der zweiten Abbildung hat der Client3Die Verbindung wurde getrennt und ist verfügbar.
wird die Verbindung freigeben, wenn der Client seine Arbeit beendet hat, und diese Verbindung ist für andere Clients verfügbar.
SpringBoot 2Der Standard-Pool in HikariCP Es bietet erweiterte Funktionen für den Unternehmensgebrauch und bessere Leistung. HikariCP ist eine Implementierung von JDBC-Datenquellen und bietet ein Poolsystem.
Wenn HikariCP auf dem Classpath vorhanden ist, konfiguriert Spring Boot es automatisch. wenn HikariCP im Classpath nicht gefunden wird, wird Spring Boot suchen Tomcat JDBC-Verbindungspool. wenn es im Classpath von Spring Boot vorhanden ist, wird es abgeholt. Wenn beide Optionen nicht verfügbar sind, wählt Spring Boot Apache Commons DBCP2 als JDBC-Verbindungspool verwenden.
Wenn wir den Standard-Verbindungspool nicht verwenden möchten, können wir den Verbindungspool auch manuell konfigurieren. Angenommen, wir möchten den Tomcat JDBC-Verbindungspool anstelle von HikariCP verwenden. Wir werden HikariCP Abhängigkeit, und fügen Sie die Datei pom.xml hinzufügen tomcat-jdbc Abhängigkeiten, wie folgt.
<dependency> <groupId>org.springframework.boot/<groupId> <artifactId>spring-boot-starter-data-jpa</ artifactId > <exclusions> <exclusion> <groupId>com.zaxxer/<groupId> <artifactId>HikariCP/ artifactId > </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.tomcat</<groupId> <artifactId>tomcat-jdbc</artifactId> <version>9.0.10</version> </dependency> <dependency> <groupId>com.h2database</<groupId> <artifactId>h2</artifactId> <version>1.4.9</version> <socpe>runtime</scoope> </dependency>
Diese Methoden ermöglichen es uns, den Tomcat-Verbindungspool zu verwenden, ohne Code schreiben zu müssen @Configuration Klasse programmatisch definieren DataSource bean.
Andererseits können wir auch den Scan-Algorithmus des Verbindungspools, der von Spring Boot verwendet wird, überspringen. Wir können durch Hinzufügen von Eigenschaften in die Datei application.properties spring.datasource.type um die Datenquelle des Verbindungspools klar zu spezifizieren.
Spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
Wir haben bereits einen Tomcat-Verbindungspool eingerichtet. Jetzt werden wir application.properties hinzufügen einige Eigenschaften, um seine Leistung zu optimieren und bestimmten spezifischen Anforderungen gerecht zu werden.
spring.datasource.tomcat.initial-size=20 spring.datasource.tomcat.max-wait=25000 spring.datasource.tomcat.max-active=70 spring.datasource.tomcat.max-idle=20 spring.datasource.tomcat.min-idle=9 spring.datasource.tomcat.default-auto-commit=true
Um eine Verbindung zur MySQL-Datenbank herzustellen, müssen wir den JDBC-Treiber im Classpath unseres Anwendungen enthalten:
<!-- MySQL JDBC Treiber --> <dependency> <groupId>mysql</<groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
Danach, in application.properties in der Datei definiert datasoure Eigenschaften.
Wenn Sie MySQL, verwenden Sie die folgenden EigenschaftenDatenbank:
spring.datasource.url=jdbc:mysql://192.168.1.4:3306/test spring.datasource.username=w3codebox spring.datasource.password=password
Wenn Sie Oracle Datenbank, verwenden Sie die folgenden Eigenschaften:
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl spring.datasource.username=system spring.datasource.password=Password123
Die Implementierung von Spring JDBC und Spring Boot JDBC ist identisch. Im Vergleich zu Spring JDBC hat Spring Boot JBDC die folgenden Vorteile:
Spring Boot JDBC | Spring JDBC |
braucht man nur einen spring-boot-starter-jdbc Abhängigkeiten. | In Spring JDBC müssen mehrere Abhängigkeiten konfiguriert werden, z.B. spring-jdbc und spring-context. |
Wenn nicht ausdrücklich gewartet, wird es automatisch die Datasource bean konfigurieren. Wenn Sie die Bean nicht verwenden möchten, können Sie die Eigenschaft spring.datasource.initialize gesetzt werden false . | In Spring JDBC muss verwendet werden XML oder javaconfig Datenbank-Bean erstellen. |
Wir müssen kein Template-Bean registrieren, da Spring Boot das Bean automatisch registriert. | Es muss ein Template-Bean registriert werden, z.B. PlatformTransactionManager, JDBCTemplate, NamedParameterJdbcTemplate . |
Alle Datenbankinitialisierungsskripte, die in der .sql-Datei gespeichert sind, werden automatisch ausgeführt. | Wenn Sie in einer SQL-Datei jeden Datenbankinitialisierungsskript erstellt haben (z.B. Tabelle löschen oder erstellen), müssen Sie diese Information in der Konfiguration explizit bereitstellen. |
JDBC | Hibernate |
JDBC ist eineTechnik. | Hibernate ist ein ORM Framewerk. |
In JDBC ist der Benutzer verantwortlich für die Erstellung und Schließung der Verbindungen. | In Hibernate ist das Laufzeitssystem verantwortlich für die Erstellung und Schließung der Verbindungen. |
Es unterstützt keine verzögerte Ladezeiten. | Es unterstützt verzögerte Ladezeiten, um eine bessere Leistung zu bieten. |
Es unterstützt keine Verknüpfungen (Verbindung zwischen zwei separaten Klassen). | Es unterstützt Verknüpfungen. |
In dem nächsten Abschnitt werden wir die Verbindung von MySQL in Spring Boot-Anwendungen lernen.