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

Einfacher Vergleich von Meta-Tags in HTML

Das Meta-Tag wird verwendet, um Dateiinformationen...

Linux Überprüfen Sie den Installationsort der Software einfache Methode

1. Überprüfen Sie den Installationspfad der Softw...

Die Verwendung von Textbereichen in HTML und häufige Probleme und Fallanalyse

Der Textarea-Tag ist ein HTML-Tag, den wir häufig ...

Konfigurationsmethode für die Mehrfachauswahlfunktion von React Mouse

Im Allgemeinen verfügen Listen über Auswahlfunkti...

Deaktivieren Sie die IE-Bildsymbolleiste

Ich habe es gerade auf IE6 ausprobiert und die Sym...

Einstellungen für den Ubuntu-Boot-Autostart-Dienst

So erstellen Sie einen Dienst und starten ihn aut...

Unterschiede zwischen MySQL MyISAM und InnoDB

Der Unterschied: 1. InnoDB unterstützt Transaktio...

Docker-Dateispeicherpfad, Port-Mapping-Betriebsmodus ändern

So erhalten Sie den Container-Startbefehl Der Con...

Eine gängige Technik zur Implementierung von Dreiecken mit CSS (mehrere Methoden)

In manchen Vorstellungsgesprächen werden häufig F...

JavaScript-Wissen: Konstruktoren sind auch Funktionen

Inhaltsverzeichnis 1. Definition und Aufruf des K...