|
|
Veröffentlicht am 20.02.2019 14:44:57
|
|
|
|

Ich bin außerdem halbherzig in Java und kenne mich mit dem Spring Family Bucket nicht sehr aus; ich habe ein Projekt-Framework auf Basis von Online-Tutorials und einigen meiner eigenen Erfahrungen entwickelt.
Projektumgebung:JDK-Version: 1.8.0_171, MySQL-Version: 5.7.17, Spring Boot: 2.1.1.RELEASE, Entwicklungstools: Idee.
Winterschlaf und JPA
Das Webprojekt in diesem Artikel verwendet Hibernate als Persistenz-Layer-Framework. In Spring Boot müssen wir ein anderes Konzept verstehen: JPA
Der vorherige Satz mag mehrdeutig sein, bedeutet aber nicht, dass JPA ein Konzept in Spring Boot ist. Stattdessen handelt es sich um die Java Persistence API, die ins Chinesische übersetzt wird als: Java Persistence Layer API.
JPA ist eine Standardspezifikation, die auf ORM (oder O/R-Mapping) basiert, bei der JPA nur Standardregeln definiert und keine Implementierung bereitstellt.
Derzeit sind die Hauptimplementierungen von JPA Hibernate, EclipseLink, OpenJPA usw.
Aufgrund der Dominanz von Hibernate im Bereich der Datenzugriffsauflösungstechnologie wird der JPA-Standard im Wesentlichen von Hibernate dominiert.
SpringBoot ist ein automatisches Gewehr
Spring Data JPA wird als Schnittstellenwerkzeug für Entwickler bereitgestellt, um das Hibernate-Framework anzuwenden. Unser Spring Boot bietet ein vollautomatisches "automatisches Abhängigkeitsmodul": spring-boot-starter-data-jpa
POM-Abhängigkeitsstruktur:
Hat jemand Fragen zur POM-Akte ohne Verwarnung für den Winterschlaf?
Der Grund dafür ist, dass, wie in der obigen Abbildung gezeigt, spring-boot-starter-data-jpa vom Hibernate-Core abhängt, und wenn spring-boot-starter-data-jpa referenziert wird, führt das Maven-Projekt automatisch das Paket ein, auf das es angewiesen ist.
application.yml Profil:
Offizieller Link zur Datenquelle der Federkonfiguration:Der Hyperlink-Login ist sichtbar.
########################################## ###datasource - Geben Sie die MySQL-Datenbank-Verbindungsinformationen an ###spring.datasource.url: MySQL-Adresse ###spring.datasource.user: Datenbank-Benutzername ###spring.datasource.password: Das Datenbankpasswort ###spring.datasource.driverClassName: Entspricht dem Datenbanktreiber ###spring.datasource.max-aktiv: Spezifiziert die maximale Anzahl aktiver Verbindungen im Verbindungspool ###spring.datasource.max-idle: Gibt die maximale Anzahl freier Verbindungen im Verbindungspool an. ###spring.datasource.min-idle: Spezifiziert den Mindestwert, der gepflegt werden muss (für DBCP- und Tomcat-Verbindungspools) ###spring.datasource.initial-size: Spezifiziert die Anzahl der Verbindungen, die zum Zeitpunkt des Starts des Verbindungspools eingerichtet wurden, ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled unabhängig davon, ob PersistenceExceptionTranslationPostProcessor aktiviert ist, ist der Standard wahr ###spring.datasource.abandon-when-percenten-fullen, setzt den Prozentsatz der aufgegebenen Verbindungen an, die geschlossen oder gemeldet werden, wenn das Timeout abgebrochen wird ###spring.datasource.allow-pool-suspension Bei Verwendung des Hikari-Pools wird die Pause des Verbindungspools auf falsch gesetzt ###spring.datasource.alternate-username-allowed, ob alternative Benutzernamen erlaubt sind. ###spring.datasource.auto-commitGibt an, ob Updates automatisch eingetragen werden. ###spring.datasource.catalog gibt den Standardkatalog an. ###spring.datasource.commit-on-return bestimmt, ob alle ausstehenden Transaktionen beim Rückkehren der Verbindung eingetragen werden sollen ###spring.datasource.connection-init-sql gibt an, dass die Verbindung erstellt und dem SQL hinzugefügt wird, das vor dem Connection Pool ausgeführt wird. ###spring.datasource.connection-init-sqls Wenn Sie den DBCP-Connection Pool verwenden, geben Sie die SQL-Datei an, die bei der Initialisierung ausgeführt werden soll ###spring.datasource.connection-properties. [Schlüssel]Gibt die Attribute an, die konfiguriert werden sollen, wenn der DBCP-Verbindungspool verwendet wird ###spring.datasource.connection-test-query spezifiziert die SQL-Anweisung, die die Legitimität der Verbindungsausführung überprüft ###spring.datasource.connection-timeoutGibt die Auszeitszeit für die Verbindung in Millisekunden an. ###spring.datasource.continue-on-errorBeim Initialisieren der Datenbank und einem Fehler über das Fortsetzen oder nicht, ist der Standard falsch ###spring.datasource.data spezifiziert das Data-(DML)-Skript ###spring.datasource.data-source-class-name Spezifiziert den vollständig qualifizierten Namen der Datenquelle. ###spring.datasource.data-source-jndi gibt die Adresse des jndi an ###spring.datasource.data-source-properties. Wenn Sie den Hikari-Verbindungspool verwenden, geben Sie die zu setzenden Attribute an ###spring.datasource.db-Eigenschaften verwendet den Tomcat-Verbindungspool und spezifiziert die zu setzenden Eigenschaften ###spring.datasource.default-auto-commit wird automatisch eingetragen. ###spring.datasource.default-catalog spezifiziert den Katalog, der mit dem Standard verbunden ist. ###spring.datasource.default-read-onlyOb die Standardverbindung auf schreibgeschützt eingestellt werden soll. ###spring.datasource.default-transaction-isolation Spezifiziert das Standard-Isolationsniveau für verbundene Transaktionen. ###spring.datasource.driver-class-name gibt den Klassennamen des Treibers an, der standardmäßig automatisch aus der jdbc-URL erkannt wird. ###spring.datasource.fair-queue Ob FIFO verwendet werden soll, gibt Verbindungen zurück. ###spring.datasource.health-check-properties. [Schlüssel] Attribut beim Verwenden des Hikari-Verbindungspools während der Herzschlagprüfung übergeben ###spring.datasource.idle-timeoutGibt an, wie lange die Verbindung nicht genutzt wird, was standardmäßig auf Idle gesetzt wird ###spring.datasource.ignore-exception-on-pre-loadOb die Ausnahme beim Initialisieren des Verbindungspools ignoriert wird. ###spring.datasource.init-sqlsql, das ausgeführt wird, wenn eine Verbindung hergestellt wird ###spring.datasource.initial-size gibt die Anzahl der Verbindungen an, die zum Zeitpunkt des Starts des Verbindungspools hergestellt werden ###spring.datasource.initialization-fail-fastBeim Erstellen eines Verbindungspools ist es nicht möglich, eine festgelegte Mindestanzahl von Verbindungen zu erstellen, um eine Ausnahme zu erzeugen ###spring.datasource.initializeGib an, ob die Datenquelle mit data.sql initialisiert werden soll, Standard: true ###spring.datasource.isolate-internal-queries gibt an, ob interne Abfragen unter Quarantäne gestellt werden sollen, standardmäßig auf falsch ###spring.datasource.jdbc-interceptors: Wenn Sie den Tomcat-Verbindungspool verwenden, geben Sie die Trennung zwischen jdbc-Interceptor und Semikolon an ###spring.datasource.jdbc-url spezifiziert die JDBC-URL. ###spring.datasource.jmx-enabled ist standardmäßig aktiviert: false ###spring.datasource.jndi-nameGibt den Namen des jndi an. ###spring.datasource.leak-detection-threshold Wie viele Millisekunden erkennen Sie ein Verbindungsleck, wenn Sie den Hikari-Verbindungspool verwenden? ###spring.datasource.log-abandoned den DBCP-Verbindungspool nutzt, um abandoned Statements oder Verbindungen zu verfolgen, ist der Standard false ###spring.datasource.log-ValidierungsfehlerBeim Einsatz von Tomcat-Verbindungspool, ob ein Validierungsfehler gedruckt werden soll. ###spring.datasource.login-timeoutLegt die Zeitabschaltzeit für die Verbindung zur Datenbank an. ###spring.datasource.max-age legt das maximale Alter der Verbindungen im Verbindungspool fest ###spring.datasource.max-Lebensdauer gibt die maximale Lebensdauer der Verbindungen im Verbindungspool in Millisekunden an. ###spring.datasource.max-Open-Prepared-Statements gibt die maximale Anzahl der vorbereiteten Anweisungen an, die geöffnet werden. ###spring.datasource.max-wait gibt die maximale Wartezeit an, in Millisekunden für den Verbindungspool, die auf die Wiederaufnahme der Verbindung warten muss. ###spring.datasource.maximum-pool-sizeGibt die maximale Anzahl der Verbindungen im Verbindungspool an, einschließlich aktiver und leerer Verbindungen. ###spring.datasource.min-evictable-idle-time-millisGibt eine freie Verbindung für die minimale Zeit an, in der sie im Leerlauf sein darf, bevor sie gelöscht werden kann. ###spring.datasource.min-idle gibt den Mindestwert an, der gepflegt werden muss (für DBCP- und Tomcat-Verbindungspools) ###spring.datasource.minimum-idle gibt die Mindestanzahl der freien Verbindungen an, die von einer Verbindung gepflegt werden, und wenn HikariCP verwendet wird. ###spring.datasource.name Gib den Namen der Datenquelle an. ###spring.datasource.num-tests-per-eviction-run gibt die Anzahl der Objekte an, wenn jeder Idle-Objekt-Evitor-Thread ausgeführt wird ###spring.datasource.passwordGeben Sie das Datenbankpasswort an. ###spring.datasource.platform spezifiziert die Plattform (schema-${platform}.sql für das Schema zu verwenden ist, die standardmäßig gilt: alle ###spring.datasource.pool-nameGibt den Namen des Verbindungspools an. ###spring.datasource.pool-prepared-StatementsGibt an, ob Anweisungen poolen sollen. ###spring.datasource.propagate-interrupt-stateOb um den Interrupt-Zustand weiterzugeben, wenn der Thread während des Wartens auf die Verbindung unterbrochen wird. ###spring.datasource.read-onlyBeim Einsatz des Hikari-Verbindungspools, ob die Datenquelle als schreibgeschützt markiert werden soll ###spring.datasource.register-mbeans gibt an, ob der Hikari-Verbindungspool JMX MBeans registriert. ###spring.datasource.remove-abandoned gibt an, ob eine Verbindung unmittelbar nach dem abgebrochenen Timeout gelöscht werden soll. ###spring.datasource.remove-abandoned-timeoutGibt den Zeitpunkt an, zu dem die Verbindung abgebrochen werden soll. ###spring.datasource.rollback-on-returnUm eine ausstehende Transaktion bei der Rückgabe einer Verbindung zurückzurollen. ###spring.datasource.schema spezifiziert das Schema (DDL)-Skript. ###spring.datasource.separator spezifiziert den Anweisungsseparator zur Initialisierung des Skripts, standardmäßig: ; ###spring.datasource.sql-Script-Encoding spezifiziert SQL-Skriptkodierung. ###spring.datasource.suspect-timeoutGibt das Timeout vor dem Drucken der aufgegebenen Verbindung an. ###spring.datasource.test-on-borrowBeim Ausleihen einer Verbindung aus einem Connection Pool, ob die Verbindung getestet werden soll. ###spring.datasource.test-on-connect wird erstellt, egal ob die Verbindung getestet werden soll ###spring.datasource.test-on-returnOb die Verbindung in den Verbindungspool zurückgegeben wird. ###spring.datasource.test-while-idleOb ein Verbindungstest durchgeführt werden soll, wenn die Verbindung im Leerlauf ist. ###spring.datasource.time-between-eviction-runs-millis Gibt das Betriebszeitintervall zwischen Inaktiv-Verbindungs-Prüfungen, der Aufräumung der abgebrochenen Verbindung und der Größe des Idle-Verbindungspools an ###spring.datasource.transaction-isolation spezifiziert das Transaktionsisolationsniveau, das bei Verwendung des Hikari-Verbindungspools angegeben wird ###spring.datasource.url gibt die JDBC-URL an. ###spring.datasource.use-disposable-connection-façade umhüllt die Verbindung, um zu verhindern, dass sie nach dem Schließen verwendet wird. ###spring.datasource.use-equals, ob String.equals() als Ersatz == verwendet werden soll. ###spring.datasource.use-lock ist bei der Verbindungsoperation gesperrt ###spring.datasource.usernameGeben Sie den Datenbanknamen an. ###spring.datasource.validation-interval gibt an, wie viele ms eine Verbindungsprüfung durchgeführt werden soll. ###spring.datasource.validation-query spezifiziert die SQL-Abfrageanweisung für die Verbindungsvalidierung beim Erlangen einer Verbindung. ###spring.datasource.validation-query-timeoutGibt die Timeout-Zeit für die Verbindungsvalidierungsanfrage an. ###spring.datasource.validation-timeoutSetzt die Timeout-Zeit für die Verbindungsvalidierung, die bei Verwendung des Hikari-Verbindungspools angegeben wird ###spring.datasource.validator-class-name Der vollständige Validator-Qualifier, der zum Testen der Abfrage verwendet wird. ###spring.datasource.xa.data-source-class-name Spezifiziert den vollständigen Qualifier der Datenquelle. ###spring.datasource.xa.properties spezifiziert die an die XA-Datenquelle übergebenen Eigenschaften ###spring.datasource.url=jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF8 ########################################## spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.max-aktiv=20 spring.datasource.max-Leerlauf=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ########################################## ##SPring JPA-Konfigurationsinformationen ###spring.jpa.database spezifiziert die Zieldatenbank. ###spring.jps.show-sq: Ob SQL-Anweisungen angezeigt werden sollen ###spring.jpa.hibernate.ddl-auto spezifiziert den DDL-Modus (nichts, validieren, aktualisieren, erstellen, erstellen-absetzen). Bei Verwendung einer eingebetteten Datenbank ist standardmäßig Create-Drop, ansonsten ist es keiner. ###spring.jpa.hibernate.naming-strategyGeben Sie die Benennungsrichtlinie an. ###其他: ###spring.jpa.database-platformGibt den Typ der Zieldatenbank an. ###spring.jpa.generate-ddl, ob das Schema beim Start initialisiert werden soll, steht standardmäßig auf false ###spring.jpa.hibernate.ddl-auto spezifiziert den DDL-Modus (nichts, validieren, aktualisieren, erstellen, erstellen-absetzen). Bei Verwendung einer eingebetteten Datenbank ist standardmäßig Create-Drop, ansonsten ist es keiner. ###spring.jpa.hibernate.naming-strategyGeben Sie die Benennungsrichtlinie an. ###spring.jpa.open-in-view registriert OpenEntityManagerInViewInterceptor und bindet JPA EntityManager an den Anfragethread, der Standard ist wahr ###spring.jpa.properties fügt dem JPA-Anbieter zusätzliche Attribute hinzu. ###spring.jpa.show-sql Ob das SQL-Log aktiviert werden soll, ist standardmäßig auf false gesetzt ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Die gesamte Paketstruktur
Datenquellenkonfiguration:
Entitätsklasse:
Datenbank-Betriebsschnittstelle:
Die Datenbank-Operationsschnittstelle erbt von der generischen JpaRepository-Klasse, und wenn sie diese erbt, erhält sie die göttliche Macht, die sie den Entwicklern verleiht:
Wir können diese Methoden direkt aufrufen, um Datenbankoperationen durchzuführen, und wir können HQL auch anpassen, um andere Operationen abzuschließen, die zu unserer Persönlichkeit passen, wie zum Beispiel:
In diesem Code, durch @Query Kommentar,Fertigstellung des Schreibens von HQLwobei ":name" mit dem Parameter in der @Param Annotation unten konsistent ist.
Hinweis: Der Tabellenname in HQL sollte der Klassenname der ORM-Abbildung sein, und HQL unterscheidet sich einige von traditionellen SQL-Anweisungen, wie zum Beispiel die Bedeutung von "*" usw.
Wenn Sie es nicht gewohnt sind, HQL zu verwenden, können Sie auch SQL-Anweisungen verwenden:
Die oben genannte Methode ist auch dann wirksam, wenn sie angewendet wird.nativeQuery to true bedeutet, die SQL-Sprache zu verwenden。
Controller-Klasse:
Starten Sie das Projekt
Hibernate ordnet Entitätsklassen automatisch der Datenbank zu, um relevante Datenbanktabellen für uns zu erstellen, und matcht Datenbanktabellen automatisch basierend auf Annotationen wie @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO) usw. ab. Das spart viel Tabellierungsarbeit.
(Vor Beginn des Projekts musst du zuerst die Datenbank erstellen, und die Tabelle wird automatisch erstellt.)
hibernate_sequence Tabelle ist eine ID-Generierungsstrategie, @GeneratedValue annotiert, GenerationType.AUTO steht für automatische Generierung, vorausgesetzt, das id-Attribut muss ein int- oder long-type-Attribut sein; wenn es sich um eine id des String-Typs handelt, meldet das Hinzufügen dieser Annotation über id sofort einen Fehler. Daher müssen Sie, wenn es sich um die ID des String-Typs handelt, die ID nicht mit @GeneratedValue annotieren (strategy = GenerationType.AUTO).
Fordern Sie einen Test an
Vollständige Datenanfrage und Datenspeicherung über Get bzw. Post.
anrufenDer Hyperlink-Login ist sichtbar.Die Schnittstelle POST fordert Daten auf, wie in der folgenden Abbildung dargestellt:
Die Datenbankanfrage ist wie folgt:
Erhalten Sie die Daten über die folgende Schnittstelle:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
Hinweis: Wie von der obigen Oberfläche gefordert, ist Java sehr empfindlich gegenüber Groß- und Schreib- und Großschreibsensitivität, egal ob es sich um die URL-Adresse oder die Parameter handelt, es muss groß- und kleinschreibungssensitiv sein! Wenn ein Buchstabe Groß- oder Kleinbuchstaben ist, führt das dazu, dass die Anfrage die Schnittstelle nicht erreicht oder der Parameter ist leer!
Druide überwacht folgende Situationen:
Zum Schluss fügen Sie den Quellcode an:
Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitte Antwort
(Ende)
|
Vorhergehend:Es wurde fehlgesehen, eine DataSource zu konfigurierenNächster:Jieyou Nachmittagstee | Mittwoch, 20. Februar 2019
|