Detailliertes Beispiel für das Datenbankbetriebsobjektmodell in Spring jdbc

Detailliertes Beispiel für das Datenbankbetriebsobjektmodell in Spring jdbc

Detailliertes Beispiel für das Datenbankbetriebsobjektmodell in Spring jdbc

Objektivierung von Spring JDBC-Datenbankoperationen

Verwenden Sie objektorientierte Methoden, um relationale Datenbankoperationen darzustellen und ein threadsicheres und wiederverwendbares Objektmodell zu implementieren. Die übergeordnete Klassenschnittstelle der obersten Ebene ist RdbmsOperation.

SqlOperation erbt diese Schnittstelle, um Datenbankoperationen wie Auswählen, Aktualisieren und Aufrufen zu implementieren.

1. Abfrageschnittstelle: SqlQuery

1) Generische SQL-Abfrage, aktualisierbare SQL-Abfrage, MappingSQL-Abfrage mit Parameter

2) SqlUpdate, BatchSqlUpdate

3) SQL-Aufruf

1) Kapseln Sie die Datenbankoperation „select“ als Objekt. Die Basisklasse der Abfrageoperation ist SqlQuery. Alle Abfragen können durch diese Klasse dargestellt werden. Spring JDBC bietet auch einige einfacher zu verwendende MappingSqlQueryWithParameters und MappingSqlQuery zum Zuordnen von Ergebnismengen zu Java-Objekten. Die Abfrageobjektklasse bietet außerdem zwei Erweiterungen: UpdatableSqlQuery und SqlFunction.

2) Hinzufügen, Löschen und Ändern von Operationen, kapseln Sie die Datenbankoperationen Einfügen, Aktualisieren und Löschen als Objekte. Die Basisklasse für Hinzufügen, Löschen und Ändern von Operationen ist SqlUpdate. Natürlich wird auch BatchSqlUpdate für die Stapelverarbeitung bereitgestellt.

3) Gespeicherte Prozeduren und Funktionsaufrufe werden als Objekte gekapselt. Die Basisklasse ist die SqlCall-Klasse, die eine StoredProcedure-Implementierung bereitstellt.

Datenbankverbindung

JDBC:

Spring jdbc steuert die Datenbankverbindung über DataSource, das heißt, sie wird über ihre Implementierungsunterklasse abgerufen.

1) DriverManagerDataSource: Einfache Kapselung von DriverManager.getConnection()

2) SingleConnectionDataSource: kapselt eine Verbindung intern, wird nicht geschlossen und kann nicht von mehreren Threads verwendet werden, dient zum Testen

3) LazyConnectionDataSourceProxy: Kapselt DataSource und wird verwendet, um den Erwerb von Datenbankverbindungen zu verzögern. Die Verbindung wird nur dann erlangt, wenn tatsächlich eine Anweisung erstellt wird. Daher wird in tatsächlichen Projekten der Proxy schließlich verwendet, um die ursprüngliche DataSource zu umhüllen, sodass die Verbindung nur dann erlangt wird, wenn sie wirklich benötigt wird.

Verkäufer:

Die bereitgestellten DataSource-Implementierungen umfassen hauptsächlich C3P0/Proxool/DBCP/ usw. Diese Implementierungen verfügen alle über Datenbankverbindungspoolfunktionen.

DataSourceUtils: Das abstrakte Spring JDBC-Framework erhält Datenbankverbindungen über seine Methode getConnection(DataSource dataSource), releaseConnection(Connection con, DataSource dataSource) wird zum Freigeben von Datenbankverbindungen verwendet und DataSourceUtils wird zum Unterstützen von Spring-verwalteten Transaktionen verwendet. Nur Verbindungen, die mit DataSourceUtils erhalten wurden, verfügen über Spring-verwaltete Transaktionen.

Spring JDBC bietet konsistenten Datenbankzugriff über die abstrakte Klasse DaoSupport.

1) JdbcDaoSupport: unterstützt konsistenten JdbcTemplate-Zugriff

2) NamedParameterJdbcDaoSupport: Eine Unterklasse von JdbcDaoSupport, die Zugriff auf NamedParameterJdbcTemplate bietet

3) SimpleJdbcDaoSupport: JdbcDaoSupport-Unterklasse, die Zugriff auf SimpleJdbcTemplate bietet

Da die Klassen JdbcTemplate, NamedParameterJdbcTemplate und SimpleJdbcTemplate DataSourceUtils zum Abrufen und Freigeben von Verbindungen verwenden und die Verbindungen an Threads gebunden sind, sind diese JDBC-Vorlagenklassen threadsicher, d. h. JdbcTemplate-Objekte können in mehreren Threads wiederverwendet werden.

Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht oder kommen Sie zur Diskussion in die Community. Vielen Dank fürs Lesen und ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • So installieren und führen Sie das Python-Plugin in IntelliJ IDEA aus
  • Intellij IDEA-Installation und Verwendung des Lombok-Plug-Ins
  • Verwendung des IntelliJ IDEA Hot Deployment-Plugins JRebel
  • Empfehlen Sie ein Key Promoter X-Plugin für IntelliJ IDEA, um Tastenkombinationen aufzurufen
  • Ein unverzichtbares Intellij IDEA-Plugin für Java-Programmierer
  • Grafisches Tutorial zur Installation und Verwendung von IntelliJ IDEA JRebel (Hot Deployment-Plug-in)
  • Erste Schritte mit der Intellij IDEA-Plugin-Entwicklung
  • Entwicklung des Intellij Idea-Plugins: Erstellen eines Rechtsklickmenüs auf Projektebene
  • Verwenden Sie das Spring Initializr-Plugin in IntelliJ IDEA 2017.2.5 x64, um schnell ein Spring Boot/Cloud-Projekt zu erstellen (Abbildung)
  • Detaillierte Beschreibung der Installation und Verwendung des IntelliJ IDEA-Plugins (Abbildung)
  • So installieren Sie das Vue-Entwicklungs-Plugin in IntelliJ IDEA
  • Detaillierte Erklärung zur Verwendung des .ignore-Plugins in IntelliJ IDEA, um unnötig übermittelte Dateien zu ignorieren
  • Intellij IDEA-Konfiguration - Schritte zur Implementierung des Subversion-Plugins - Detaillierte Erläuterung
  • Praktischer Beispielcode für Datenbankoperationen von Spring Boot
  • Grafisches Tutorial zur Verwendung der Springboot-Datenbank
  • Beispiel für eine Spring Boot Mysql-Datenbankoperation
  • Detaillierte Methode zur Verwendung des IntelliJ IDEA-Plugins EasyCode zum Generieren von Code mit einem Klick in Spring Boot

<<:  So erstellen Sie eine Swap-Partitionsdatei in Linux

>>:  Implementierung der Parametersprungfunktion im Vue-Projekt

Artikel empfehlen

CSS3-Eigenschaft line-clamp steuert die Verwendung von Textzeilen

Beschreibung: Begrenzen Sie die Anzahl der Textze...

Ein Artikel zum Verständnis von MySQL Index Pushdown (ICP)

Inhaltsverzeichnis 1. Einleitung 2. Grundsatz Pra...

SQL GROUP BY ausführliche Erklärung und einfaches Beispiel

Die GROUP BY-Anweisung wird in Verbindung mit der...

Select unterstützt kein Doppelklick-DBClick-Ereignis

XML/HTML-CodeInhalt in die Zwischenablage kopiere...

Vue3-Zeitstempelkonvertierung (ohne Verwendung von Filtern)

Wenn vue2 Zeitstempel konvertiert, verwendet es i...

Schritte zum Installieren von Superset unter dem Win10-System

Superset ist ein leichtes Self-Service-BI-Framewo...

So stellen Sie Node.js mit Docker bereit

Vorwort Node wird als mittlere Schicht im Projekt...

Binäre Typoperationen in MySQL

Dieser Artikel stellt hauptsächlich die binären O...

So verwenden Sie den Linux-Befehl nl

1. Befehlseinführung nl (Anzahl der Zeilen) fügt ...

Vue implementiert einen Login-Verifizierungscode

In diesem Artikelbeispiel wird der spezifische Co...