[SpringBoot-Reihe] Analyse der Datenschichttechnologie

Vorimport

Bei der früheren SSMP-Integration umfasste die betroffene Datenschichtlösung die MySQL-Datenbank und das MyBatisPlus-Framework und später die Konfiguration der Druid-Datenquelle, sodass die Datenschichtlösung jetzt als Mysql+Druid+MyBatisPlus bezeichnet werden kann. Die drei Technologien entsprechen den drei Ebenen der Datenschichtoperationen:

  • Datenquellentechnologie: Druide
  • Persistenztechnologie: MyBatisPlus
  • Datenbanktechnologie: MySQL

Die folgende Recherche gliedert sich in drei Rechercheebenen: Beginnen wir entsprechend den drei oben aufgeführten Aspekten mit der ersten Datenquellentechnologie.

Datenquellentechnologie

Derzeit verwenden wir Druid als Datenquellentechnologie, und die entsprechenden Datenquellen-Initialisierungsinformationen können im Protokoll zur Laufzeit wie folgt eingesehen werden:

INFO 28600 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
INFO 28600 --- [           main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited

Wenn die Druid-Datenquelle nicht verwendet wird, wie sieht das Programm nach der Ausführung aus? Handelt es sich um ein unabhängiges Datenbankverbindungsobjekt oder wird es von anderen Verbindungspooling-Technologien unterstützt? Entfernen Sie den der Druid-Technologie entsprechenden Starter und führen Sie das Programm erneut aus, um die folgenden Initialisierungsinformationen im Protokoll zu finden:

INFO 31820 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
INFO 31820 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.

Obwohl es keine Informationen zu DruidDataSource gibt, haben wir festgestellt, dass es im Protokoll Informationen zu HikariDataSource gibt. Auch wenn Sie nicht wissen, um welche Technologie es sich handelt, können Sie sie anhand des Namens erkennen. Der Name muss auf DataSource enden eine Datenquellentechnologie sein. Wir haben diese Technologie nicht manuell hinzugefügt, woher kommt diese Technologie? Es ist die eingebettete Springboot-Datenquelle.

Die Data-Layer-Technologie wird von jeder Anwendung auf Unternehmensebene verwendet, in der die Datenbankverbindungsverwaltung durchgeführt werden muss. Springboot basiert auf den Gewohnheiten des Entwicklers. Der Entwickler stellt die Datenquellentechnologie bereit, verwenden Sie einfach das, was Sie bereitstellen, aber der Entwickler stellt es nicht bereit. Dann können Sie nicht jedes Datenbankverbindungsobjekt manuell verwalten. Was soll ich tun? Ich gebe Ihnen nur eine Standardeinstellung, die Ihnen Sorgen und Ärger erspart und für alle bequem ist.

springboot bietet 3 eingebettete Datenquellentechnologien, wie folgt:

  • HikariCP
  • Tomcat stellt DataSource bereit
  • Commons DBCP

Die erste ist HikartCP, die von springboot offiziell empfohlene Datenquellentechnologie.Als integrierte Standarddatenquelle verwenden. Wie meinst du das? Wenn Sie keine Datenquelle konfigurieren, verwenden Sie diese.

​ Die zweite, die von Tomcat bereitgestellte DataSource,Wenn Sie HikartCP nicht verwenden und Tomcat als Webserver für die Entwicklung von Webprogrammen verwenden möchten, verwenden Sie dies. Warum Tomcat, nicht irgendein anderer Webserver? Denn nach dem Import der Web-Technologie in den Starter wird standardmäßig der eingebettete Kater verwendet, da es sich um die standardmäßig verwendete Technologie handelt, wird sie bis zum Ende verwendet und die Datenquelle verwendet sie auch. Jemand schlug vor, das von HikartCP bereitgestellte Standarddatenquellenobjekt nicht mit Tomcat zu verwenden? Es ist in Ordnung, die Koordinaten der HikartCP-Technologie auszuschließen .

Beim dritten Typ, DBCP, sind die Bedingungen für diese Verwendung noch härter.Wenn weder HikartCP noch die DataSource von Tomcat verwendet werden, wird diese standardmäßig für Sie verwendet.

​ Die Sorgen von Springboot sind auch zerbrochen. Ich fürchte, Sie können das Verbindungsobjekt nicht selbst verwalten. Ich gebe Ihnen eine Empfehlung. Es ist wirklich der stärkste Assistent in der Entwicklungswelt. Da sie Ihnen Milch gegeben haben, können Sie sie verwenden. Wie konfiguriere und verwende ich diese Dinge? Wenn wir zuvor druid konfiguriert haben, ist die Konfiguration, die dem Starter von druid entspricht, wie folgt:

spring:
  datasource:
    druid:	
   	  url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: ************

​ Nachdem Sie zur Standarddatenquelle HikariCP gewechselt haben, löschen Sie einfach den Druiden wie folgt:

Hinweis: Dieser Ort muss auch den Druiden-Starter löschen.

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: *****************

Natürlich können Sie die Konfiguration auch für hikari schreiben, aber die URL-Adresse sollte wie folgt separat konfiguriert werden (d. h. eine andere Schreibweise):

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    hikari:
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: *************

So wird die hikari-Datenquelle konfiguriert. Wenn Sie hikari weiter konfigurieren möchten, können Sie mit der Konfiguration seiner unabhängigen Eigenschaften fortfahren. Z.B:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
    hikari:
      driver-class-name: com.mysql.cj.jdbc.Driver
      username: root
      password: **************
      maximum-pool-size: 50

Wenn Sie die Hikari-Datenquelle nicht verwenden möchten, verwenden Sie die Tomcat-Datenquelle oder das DBCP-Konfigurationsformat ist dasselbe. Wenn wir in Zukunft die Datenschicht erstellen, ist die Auswahl des Datenquellenobjekts nicht mehr eine einzelne Verwendung der Druiden-Datenquellentechnologie und kann entsprechend den Anforderungen ausgewählt werden.

Zusammenfassen

  1. Springboot-Technologie bietet 3 integrierte Datenquellentechnologien, nämlich Hikari, Tomcat-integrierte Datenquelle, DBCP

Persistenz-Technologie

Nachdem wir über die Datenquellenlösung gesprochen haben, sprechen wir über die Persistenzlösung. Springboot spielt seine stärksten Zusatzfunktionen voll aus und stellt Entwicklern eine Reihe vorgefertigter Datenschichttechnologien namens JdbcTemplate zur Verfügung. Tatsächlich kann diese Technologie nicht als von springboot bereitgestellt bezeichnet werden, da sie ohne den Einsatz von springboot-Technologie verwendet werden kann. Sie wird von der Spring-Technologie bereitgestellt, also gibt es diese Technologie in der Kategorie der Springboot-Technologie, schließlich wurde die Springboot-Technologie geschaffen, um die Entwicklung von Federprogrammen zu beschleunigen.

Diese Technologie stellt eigentlich eine Rückkehr zur primitivsten Programmierform von jdbc für die Datenschichtentwicklung dar. Die folgenden Schritte werden direkt ausgeführt:

Schritt 1 : Importieren Sie die jdbc entsprechenden Koordinaten, merken Sie sich den Starter

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

Schritt 2 : Automatisches Assemblieren des JdbcTemplate-Objekts

@SpringBootTest
class Springboot15SqlApplicationTests {
    
    
    @Test
    void testJdbcTemplate(@Autowired JdbcTemplate jdbcTemplate){
    
    
    }
}

Schritt 3 : Verwenden Sie JdbcTemplate, um Abfrageoperationen zu implementieren (Abfrageoperationen für nicht in Entitätsklassen gekapselte Daten).

@Test
void testJdbcTemplate(@Autowired JdbcTemplate jdbcTemplate){
    
    
    String sql = "select * from tbl_book";
    List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
    System.out.println(maps);
}

Ergebnis:
Bildbeschreibung hier einfügen

Schritt 4 : Verwenden Sie JdbcTemplate, um Abfrageoperationen zu implementieren (Entitätsklassen kapseln Datenabfrageoperationen).

@Test
void testJdbcTemplate(@Autowired JdbcTemplate jdbcTemplate){
    
    

    String sql = "select * from tbl_book";
    RowMapper<Book> rm = new RowMapper<Book>() {
    
    
        @Override
        public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
    
    
            Book temp = new Book();
            temp.setId(rs.getInt("id"));
            temp.setName(rs.getString("name"));
            temp.setType(rs.getString("type"));
            temp.setDescription(rs.getString("description"));
            return temp;
        }
    };
    List<Book> list = jdbcTemplate.query(sql, rm);
    System.out.println(list);
}

Ergebnis:
Bildbeschreibung hier einfügen

Schritt ⑤ : Verwenden Sie JdbcTemplate, um Hinzufügungs-, Lösch- und Änderungsoperationen zu implementieren

@Test
void testJdbcTemplateSave(@Autowired JdbcTemplate jdbcTemplate){
    
    
    String sql = "insert into tbl_book values(3,'springboot1','springboot2','springboot3')";
    jdbcTemplate.update(sql);
}

Wenn Sie das JdbcTemplate-Objekt konfigurieren möchten, können Sie es wie folgt in der yml-Datei festlegen:

spring:
  jdbc:
    template:
      query-timeout: -1   # 查询超时时间
      max-rows: 500       # 最大行数
      fetch-size: -1      # 缓存行数

fetch-sizeKann unsere Abfrageleistung verbessern. Zum Beispiel prüfen wir jetzt 10.000 Datenstücke, wie viele Stücke werden uns gleichzeitig gegeben? Dies kann fetch-sizedurch gesteuert werden. Wenn wir jeweils fünfzig geben und diese fünfzig auch verwenden, dann wird die Effizienz sehr hoch sein. Und wenn wir mehr als 50 verbrauchen, kommt es wieder und die Effizienz wird reduziert.

Zusammenfassen

  1. SpringBoot integrierte JdbcTemplate-Persistenzlösung
  2. Bei Verwendung von JdbcTemplate müssen die Koordinaten von spring-boot-starter-jdbc importiert werden

Datenbanktechnologie

Bisher hat springboot Entwicklern integrierte Datenquellenlösungen und Persistenzlösungen zur Verfügung gestellt. In der dreiteiligen Datenschichtlösung ist eine Datenbank übrig. Könnte es sein, dass springboot auch integrierte Lösungen bereitstellt? Es gibt nicht einen, sondern drei

Springboot bietet 3 eingebaute Datenbanken, nämlich:

  • H2
  • HSQL
  • Derby

Neben der unabhängigen Installation der oben genannten . Eingebettet in den Container, um ausgeführt zu werden, muss es ein Java-Objekt sein, ja, die unterste Schicht dieser drei Datenbanken wird mit der Java-Sprache entwickelt.

​ Wir haben die ganze Zeit über die MySQL-Datenbank verwendet, warum ist es also notwendig, diese zu verwenden?Der Grund dafür ist, dass diese drei Datenbanken in Form von eingebetteten Containern ausgeführt werden können.Nachdem die Anwendung ausgeführt wird, wenn wir Testarbeiten durchführen, müssen die zu testenden Daten nicht auf der Festplatte gespeichert werden, sondern sie müssen verwendet werden Testen Praktisch, läuft im Speicher, es ist Zeit zum Testen, es ist Zeit zum Ausführen, und wenn der Server heruntergefahren wird, verschwindet alles, was großartig ist und Sie davon abhält, eine externe Datenbank zu verwalten. Dies ist auch der größte Vorteil der eingebetteten Datenbank, die praktisch für Funktionstests ist.

​ Im Folgenden wird die H2-Datenbank als Beispiel verwendet, um zu erklären, wie diese eingebetteten Datenbanken verwendet werden. Die Arbeitsschritte sind ebenfalls sehr einfach. Einfach ist einfach zu verwenden.

Schritt 1 : Importieren Sie die Koordinaten, die der H2-Datenbank entsprechen, insgesamt 2

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Schritt 2 : Legen Sie das Projekt als Webprojekt fest und starten Sie die H2-Datenbank, wenn Sie das Projekt starten

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Schritt ③ : Öffnen Sie das Zugriffsprogramm für die H2-Datenbankkonsole über die Konfiguration oder verwenden Sie eine andere Datenbankverbindungssoftware für den Betrieb

spring:
  h2:
    console:
      enabled: true
      path: /h2

Danach starten wir den Server und greifen dann auf localhost/h2 zu (der Port wurde im Voraus auf 80 eingestellt). Die Seite zeigt Folgendes an:
Bildbeschreibung hier einfügen
webseitiger Zugriffspfad /h2, Zugriffspasswort 123456, wenn der Zugriff fehlschlägt, konfigurieren Sie Folgendes Datenquellen zuerst, nachdem das Startprogramm ausgeführt wurde Greifen Sie erneut auf den /h2-Pfad zu und Sie können normal darauf zugreifen (nach erfolgreichem Zugriff können Sie auch die folgenden Inhalte entfernen)

datasource:
  url: jdbc:h2:~/test
  hikari:
    driver-class-name: org.h2.Driver
    username: sa
    password: 123456

Dann haben wir die folgende Webseite aufgerufen:
Bildbeschreibung hier einfügen
Wir können zuerst eine Tabelle erstellen:
Bildbeschreibung hier einfügen

Dann schauen wir uns die Tabelle an:
Bildbeschreibung hier einfügen
Wir fügen ihr zwei Daten hinzu:

insert into tbl_book values(1,'springboot','springboot','springboot')
insert into tbl_book values(2,'springboot2','springboot2','springboot2')

Lassen Sie uns die Tabelle erneut überprüfen und feststellen, dass die Daten erfolgreich hinzugefügt wurden:
Bildbeschreibung hier einfügen

Schritt ④ : Verwenden Sie die JdbcTemplate- oder MyBatisPlus-Technologie, um die Datenbank zu betreiben

Hier sprechen wir nur über JdbcTemplate, MyBatisPlus-Technologie ist die gleiche wie zuvor.

An dieser Stelle sollte die Datenquelle geschrieben werden:
Bildbeschreibung hier einfügen
Die Konfigurationsinformationen der Datenquelle werden geschrieben, wenn wir zum ersten Mal die h2-Webseite aufrufen

Testen wir das Hinzufügen von Daten:
Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Tatsächlich haben wir nur eine Datenbank geändert, andere Dinge sind nicht betroffen. Eine wichtige Erinnerung: Vergessen Sie nicht, wenn Sie online gehen, die In-Memory-Datenbank zu schließen und die MySQL-Datenbank als Datenpersistenzschema zu verwenden.Um sie zu schließen, setzen Sie das Attribut enabled auf false.
Bildbeschreibung hier einfügen

Zusammenfassen

  1. Startmethode für eingebettete H2-Datenbank, Koordinaten hinzufügen, Konfiguration hinzufügen
  2. Stellen Sie sicher, dass Sie die H2-Datenbank schließen, wenn sie online ausgeführt wird

An dieser Stelle haben wir unsere Gespräche über SQL-bezogene Data-Layer-Lösungen beendet, und jetzt sind die optionalen Technologien viel reichhaltiger.

  • Datenquellentechnologie: Druid, Hikari, Tomcat DataSource, DBCP
  • Persistenztechnologie: MyBatisPlus, MyBatis, JdbcTemplate
  • Datenbanktechnologie: MySQL, H2, HSQL, Derby

Jetzt können Sie eine der oben genannten Technologien auswählen, um eine Datenbanklösung zu organisieren, wenn Sie ein Programm entwickeln.

Bildbeschreibung hier einfügen

Ich denke du magst

Origin blog.csdn.net/zyb18507175502/article/details/126342990
Empfohlen
Rangfolge